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 | |
| ```bash | |
| pip install -r simulationserver/requirements.txt | |
| ``` | |
| ## Configuration | |
| 1. Installer et démarrer Redis: | |
| ```bash | |
| # 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: | |
| ```bash | |
| python manage.py migrate | |
| ``` | |
| 2. Initialiser les méthodes de simulation: | |
| ```bash | |
| python manage.py init_simulation_methods | |
| ``` | |
| 3. Démarrer le serveur Django: | |
| ```bash | |
| python manage.py runserver 0.0.0.0:8000 | |
| ``` | |
| 4. Démarrer le worker Celery (dans un autre terminal): | |
| ```bash | |
| 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é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` | |