Spaces:
Running
Running
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
- 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
- Appliquer les migrations:
python manage.py migrate
- Initialiser les méthodes de simulation:
python manage.py init_simulation_methods
- Démarrer le serveur Django:
python manage.py runserver 0.0.0.0:8000
- Démarrer le worker Celery (dans un autre terminal):
cd /root/bookshop
celery -A simulationserver worker --loglevel=info
Utilisation
Interface Web
- Accueil: http://localhost:8000/
- Liste des méthodes: http://localhost:8000/methods/
- Créer une simulation: http://localhost:8000/run/create/
- Historique: http://localhost:8000/runs/
API REST
GET /api/methods/- Liste des méthodesGET /api/methods/{slug}/- Détail d'une méthodePOST /api/runs/- Créer et lancer une simulationGET /api/runs/{id}/- Détail d'une simulationGET /api/runs/{id}/status/- Statut d'une simulationPOST /api/runs/{id}/cancel/- Annuler une simulationGET /api/runs/recent/- Simulations récentes
Modèles
SimulationMethod
Décrit une méthode de simulation:
name: Nom de la méthodeslug: Identifiant uniquedescription: Description courtetheory: Documentation/theorieparameters_schema: Schema JSON des paramètresdefault_parameters: Paramètres par défaut
SimulationRun
Une exécution de simulation:
method: Méthode utiliséeparameters: Paramètres de la simulationstatus: PENDING, RUNNING, SUCCESS, FAILURE, CANCELLEDprogress: Pourcentage de progressionlogs: Logs d'exécutionresult_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
- Ajouter la fonction de simulation dans
simulations/tasks.py - Ajouter le mapping dans
SIMULATION_METHODS - Créer un
SimulationMethodvia l'admin ouinit_simulation_methods