tiffank1802
Add Django simulation server with Docker config
b42075e

Simulation Numérique Server

Plateforme Django pour exécuter des méthodes de simulation numérique avec traitement asynchrone via Celery et Redis.

Architecture

simulationserver/
├── simulations/          # App Django
│   ├── models.py        # Modèles (SimulationMethod, SimulationRun)
│   ├── tasks.py         # Tâches Celery
│   ├── views.py         # API REST
│   ├── views_views.py   # Vues HTML
│   └── templates/       # Templates
├── simulationserver/     # Configuration Django
│   ├── settings.py      # Settings + Celery config
│   ├── celery.py        # Configuration Celery
│   └── urls.py          # URLs
└── manage.py

Installation

pip install -r simulationserver/requirements.txt

Configuration

  1. Installer et démarrer Redis:
# Sur Debian/Ubuntu
sudo apt install redis-server
sudo systemctl start redis

# Ou avec Docker
docker run -d -p 6379:6379 redis:alpine

Démarrage

  1. Appliquer les migrations:
python manage.py migrate
  1. Initialiser les méthodes de simulation:
python manage.py init_simulation_methods
  1. Démarrer le serveur Django:
python manage.py runserver 0.0.0.0:8000
  1. Démarrer le worker Celery (dans un autre terminal):
cd /root/bookshop
celery -A simulationserver worker --loglevel=info

Utilisation

Interface Web

API REST

  • GET /api/methods/ - Liste des méthodes
  • GET /api/methods/{slug}/ - Détail d'une méthode
  • POST /api/runs/ - Créer et lancer une simulation
  • GET /api/runs/{id}/ - Détail d'une simulation
  • GET /api/runs/{id}/status/ - Statut d'une simulation
  • POST /api/runs/{id}/cancel/ - Annuler une simulation
  • GET /api/runs/recent/ - Simulations récentes

Modèles

SimulationMethod

Décrit une méthode de simulation:

  • name: Nom de la méthode
  • slug: Identifiant unique
  • description: Description courte
  • theory: Documentation/theorie
  • parameters_schema: Schema JSON des paramètres
  • default_parameters: Paramètres par défaut

SimulationRun

Une exécution de simulation:

  • method: Méthode utilisée
  • parameters: Paramètres de la simulation
  • status: PENDING, RUNNING, SUCCESS, FAILURE, CANCELLED
  • progress: Pourcentage de progression
  • logs: Logs d'exécution
  • result_data: Résultats JSON

Tâches Celery

Les simulations sont exécutées en arrière-plan via Celery:

  • Le worker lit les paramètres depuis la base
  • Exécute le calcul
  • Met à jour le statut et les résultats
  • Les pages web font du polling pour le suivi

Ajouter une nouvelle méthode

  1. Ajouter la fonction de simulation dans simulations/tasks.py
  2. Ajouter le mapping dans SIMULATION_METHODS
  3. Créer un SimulationMethod via l'admin ou init_simulation_methods