Skip to content

OpenLLM-France/FanLine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lucie LLM Queue Header

Introduction

Ce projet implémente un système de gestion de file d'attente intelligent pour contrôler l'accès à Lucie, notre modèle de langage (LLM) entraîné from scratch. Face à l'intérêt croissant pour les modèles de langage open source et la nécessité de gérer efficacement les ressources de calcul, ce système permet d'offrir une expérience utilisateur optimale tout en maintenant la stabilité du service.

Le Contexte

Lucie est déployée via une interface basée sur open web-ui, permettant au public de tester et d'interagir avec le modèle. Cependant, pour garantir des performances optimales et une expérience utilisateur de qualité, nous devons limiter le nombre d'accès simultanés tout en assurant une distribution équitable du temps d'utilisation.

Pourquoi un système de file d'attente ?

  • Gestion des ressources : Optimise l'utilisation des ressources GPU/CPU nécessaires pour faire fonctionner le modèle
  • Équité d'accès : Assure une distribution équitable du temps d'accès entre les utilisateurs
  • Expérience utilisateur : Offre une visibilité claire sur le temps d'attente et la disponibilité
  • Stabilité : Évite la surcharge du système en contrôlant le nombre d'utilisateurs simultanés

Les Caractéristiques

  • Gestion de 50 sessions utilisateurs simultanées
  • Sessions limitées à 20 minutes pour maximiser le nombre d'utilisateurs servis
  • Système de "draft" de 5 minutes permettant une transition fluide entre les utilisateurs
  • Mécanisme de file d'attente transparent avec notifications en temps réel
  • Intégration seamless avec l'interface open web-ui
🧪 Rapport de Tests - 2025-01-09 22:10:17 - 25/34 PASSED

🧪 Rapport de Tests - 2025-01-09 22:10:17 - 25/34 PASSED

============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-7.4.4, pluggy-1.5.0 -- /usr/local/bin/python3.13 cachedir: .pytest_cache rootdir: /app configfile: pyproject.toml testpaths: tests plugins: timeout-2.3.1, asyncio-0.21.2, anyio-3.7.1, cov-4.1.0 asyncio: mode=Mode.AUTO collecting ... collected 34 items tests/test_api_endpoints.py::TestAPI::test_join_queue_flow PASSED [ 2%] tests/test_api_endpoints.py::TestAPI::test_join_queue_flow_when_full �[31mFAILED�[31m [ 5%] tests/test_api_endpoints.py::TestAPI::test_leave_queue PASSED�[31m [ 8%] tests/test_api_endpoints.py::TestAPI::test_get_status_nonexistent PASSED�[31m [ 11%] tests/test_api_endpoints.py::TestAPI::test_heartbeat PASSED�[31m [ 14%] tests/test_api_endpoints.py::TestAPI::test_heartbeat_invalid PASSED�[31m [ 17%] tests/test_api_endpoints.py::TestAPI::test_timers_async �[31mFAILED�[31m [ 20%] tests/test_celery.py::test_celery_eager_mode PASSED�[31m [ 23%] tests/test_celery.py::test_celery_task_chaining PASSED�[31m [ 26%] tests/test_celery.py::test_celery_error_handling PASSED�[31m [ 29%] tests/test_integration.py::TestIntegration::test_concurrent_users �[31mFAILED�[31m [ 32%] tests/test_integration.py::TestIntegration::test_requeue_mechanism PASSED�[31m [ 35%] tests/test_queue_manager.py::TestQueueManager::test_fill_active_queue PASSED�[31m [ 38%] tests/test_queue_manager.py::TestQueueManager::test_add_to_queue PASSED�[31m [ 41%] tests/test_queue_manager.py::TestQueueManager::test_draft_flow PASSED�[31m [ 44%] tests/test_queue_manager.py::TestQueueManager::test_draft_expiration PASSED�[31m [ 47%] tests/test_queue_manager.py::TestQueueManager::test_error_handling PASSED�[31m [ 50%] tests/test_queue_manager.py::TestQueueManager::test_timer_edge_cases PASSED�[31m [ 52%] tests/test_queue_manager.py::TestQueueManager::test_slot_checker_lifecycle PASSED�[31m [ 55%] tests/test_queue_manager.py::TestQueueManager::test_verify_queue_state_errors PASSED�[31m [ 58%] tests/test_queue_manager.py::TestQueueManager::test_session_management PASSED�[31m [ 61%] tests/test_timers.py::TestTimers::test_draft_timer_redis PASSED�[31m [ 64%] tests/test_timers.py::TestTimers::test_session_timer_redis PASSED�[31m [ 67%] tests/test_timers.py::TestTimers::test_get_timers_endpoint_draft �[31mFAILED�[31m [ 70%] tests/test_timers.py::TestTimers::test_get_timers_endpoint_session �[31mFAILED�[31m [ 73%] tests/test_timers.py::TestTimers::test_get_timers_endpoint_both �[31mFAILED�[31m [ 76%] tests/test_timers.py::TestTimers::test_get_timers_endpoint_no_timers PASSED�[31m [ 79%] tests/test_timers.py::TestTimers::test_pubsub_connection_draft �[31mFAILED�[31m [ 82%] tests/test_timers.py::TestTimers::test_pubsub_connection_session PASSED�[31m [ 85%] tests/test_timers.py::TestTimers::test_pubsub_multiple_updates �[31mFAILED�[31m [ 88%] tests/test_timers.py::test_update_timer_channel_expiration PASSED�[31m [ 91%] tests/test_timers.py::test_update_timer_channel PASSED�[31m [ 94%] tests/test_timers_async.py::TestTimersAsync::test_pubsub_multiple_updates_async �[31mFAILED�[31m [ 97%] tests/test_timers_async.py::TestTimersAsync::test_update_timer_channel_async PASSED�[31m [100%] =================================== FAILURES =================================== �[31m____________________ TestAPI.test_join_queue_flow_when_full ____________________ self = <test_api_endpoints.TestAPI object at 0xffffb41e60d0> test_client = <httpx.AsyncClient object at 0xffffb4072fd0> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> > ??? �[31mE KeyError: 'position' �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_api_endpoints.py:99: KeyError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:10:21 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:10:21 - test_logger - INFO - QueueManager initialisé avec succès 2025-01-09 21:10:21 - test_logger - INFO - Client de test initialisé avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:155 QueueManager initialisé avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_0 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_0 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_0: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_0: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_0 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_0 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_0 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_0 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_0: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_0 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_1 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_1 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_1: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_1: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_1 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_1 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_1 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_1 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_1: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_1 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_2 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_2 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_2: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_2: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_2 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_2 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_2 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_2 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_2: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_2 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_3 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_3 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_3: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_3: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_3 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_3 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_3 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_3 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_3: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_3 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_4 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_4 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_4: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_4: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_4 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_4 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_4 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_4 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_4: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_4 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_5 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_5 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_5: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_5: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_5 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_5 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_5 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_5 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_5: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_5 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_6 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_6 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_6: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_6: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_6 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_6 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_6 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_6 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_6: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_6 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_7 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_7 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_7: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_7: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_7 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_7 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_7 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_7 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_7: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_7 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_8 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_8 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_8: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_8: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_8 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_8 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_8 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_8 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_8: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_8 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_9 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_9 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_9: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_9: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_9 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_9 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_9 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_9 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_9: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_9 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_10 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_10 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_10: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_10: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_10 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_10 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_10 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_10 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_10: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_10 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_11 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_11 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_11: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_11: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_11 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_11 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_11 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_11 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_11: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_11 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_12 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_12 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_12: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_12: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_12 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_12 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_12 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_12 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_12: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_12 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_13 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_13 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_13: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_13: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_13 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_13 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_13 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_13 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_13: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_13 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_14 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_14 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_14: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_14: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_14 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_14 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_14 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_14 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_14: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_14 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_15 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_15 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_15: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_15: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_15 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_15 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_15 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_15 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_15: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_15 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_16 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_16 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_16: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_16: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_16 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_16 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_16 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_16 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_16: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_16 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_17 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_17 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_17: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_17: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_17 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_17 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_17 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_17 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_17: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_17 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_18 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_18 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_18: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_18: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_18 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_18 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_18 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_18 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_18: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_18 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_19 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_19 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_19: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_19: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_19 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_19 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_19 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_19 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_19: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_19 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_20 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_20 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_20: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_20: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_20 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_20 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_20 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_20 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_20: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_20 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_21 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_21 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_21: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_21: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_21 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_21 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_21 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_21 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_21: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_21 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_22 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_22 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_22: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_22: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_22 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_22 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_22 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_22 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_22: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_22 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_23 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_23 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_23: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_23: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_23 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_23 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_23 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_23 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_23: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_23 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_24 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_24 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_24: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_24: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_24 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_24 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_24 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_24 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_24: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_24 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_25 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_25 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_25: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_25: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_25 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_25 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_25 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_25 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_25: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_25 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_26 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_26 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_26: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_26: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_26 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_26 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_26 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_26 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_26: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_26 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_27 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_27 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_27: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_27: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_27 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_27 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_27 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_27 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_27: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_27 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_28 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_28 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_28: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_28: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_28 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_28 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_28: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_28 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_29 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_29 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_29: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_29: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_29 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_29 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_29 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_29 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_29: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_29 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_30 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_30 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_30: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_30: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_30 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_30 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_30 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_30 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_30: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_30 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_31 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_31 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_31: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_31: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_31 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_31 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_31 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_31 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_31: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_31 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_32 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_32 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_32: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_32: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_32 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_32 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_32 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_32 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_32: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_32 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_33 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_33 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_33: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_33: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_33 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_33 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_33 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_33 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_33: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_33 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_34 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_34 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_34: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_34: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_34 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_34 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_34 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_34 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_34: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_34 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_35 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_35 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_35: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_35: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_35 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_35 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_35 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_35 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_35: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_35 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_36 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_36 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_36: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_36: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_36 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_36 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_36 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_36 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_36: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_36 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_37 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_37 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_37: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_37: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_37 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_37 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_37 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_37 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_37: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_37 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_38 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_38 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_38: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_38: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_38 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_38 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_38 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_38 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_38: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_38 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_39 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_39 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_39: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_39: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_39 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_39 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_39 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_39 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_39: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_39 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_40 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_40 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_40: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_40: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_40 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_40 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_40 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_40 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_40: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_40 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_41 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_41 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_41: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_41: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_41 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_41 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_41 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_41 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_41: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_41 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_42 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_42 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_42: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_42: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_42 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_42 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_42 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_42 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_42: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_42 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_43 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_43 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_43: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_43: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_43 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_43 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_43 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_43 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_43: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_43 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_44 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_44 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_44: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_44: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_44 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_44 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_44 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_44 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_44: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_44 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_45 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_45 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_45: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_45: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_45 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_45 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_45 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_45 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_45: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_45 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_46 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_46 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_46: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_46: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_46 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_46 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_46 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_46 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_46: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_46 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_47 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_47 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_47: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_47: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_47 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_47 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_47 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_47 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_47: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_47 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_48 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_48 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_48: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_48: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_48 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_48 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_48 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_48 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_48: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_48 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_49 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_49 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_49: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_49: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_49 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_49 2025-01-09 21:10:21 - test_logger - INFO - Slot offert avec succès à test_user_49 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'offre de slot à test_user_49 2025-01-09 21:10:21 - test_logger - INFO - État invalide pour test_user_49: déjà en draft ou actif 2025-01-09 21:10:21 - test_logger - INFO - Connexion confirmée pour test_user_49 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_50 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_50 avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_50: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_50: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_50 ------------------------------ Captured log call ------------------------------- INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_0 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_0 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_0: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_0: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_0 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_0 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_0 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_0 INFO test_logger:queue_manager.py:349 État invalide pour test_user_0: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_0 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_1 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_1 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_1: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_1: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_1 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_1 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_1 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_1 INFO test_logger:queue_manager.py:349 État invalide pour test_user_1: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_1 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_2 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_2 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_2: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_2: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_2 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_2 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_2 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_2 INFO test_logger:queue_manager.py:349 État invalide pour test_user_2: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_2 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_3 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_3 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_3: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_3: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_3 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_3 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_3 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_3 INFO test_logger:queue_manager.py:349 État invalide pour test_user_3: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_3 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_4 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_4 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_4: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_4: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_4 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_4 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_4 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_4 INFO test_logger:queue_manager.py:349 État invalide pour test_user_4: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_4 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_5 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_5 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_5: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_5: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_5 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_5 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_5 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_5 INFO test_logger:queue_manager.py:349 État invalide pour test_user_5: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_5 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_6 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_6 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_6: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_6: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_6 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_6 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_6 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_6 INFO test_logger:queue_manager.py:349 État invalide pour test_user_6: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_6 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_7 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_7 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_7: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_7: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_7 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_7 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_7 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_7 INFO test_logger:queue_manager.py:349 État invalide pour test_user_7: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_7 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_8 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_8 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_8: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_8: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_8 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_8 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_8 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_8 INFO test_logger:queue_manager.py:349 État invalide pour test_user_8: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_8 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_9 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_9 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_9: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_9: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_9 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_9 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_9 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_9 INFO test_logger:queue_manager.py:349 État invalide pour test_user_9: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_9 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_10 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_10 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_10: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_10: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_10 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_10 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_10 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_10 INFO test_logger:queue_manager.py:349 État invalide pour test_user_10: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_10 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_11 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_11 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_11: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_11: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_11 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_11 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_11 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_11 INFO test_logger:queue_manager.py:349 État invalide pour test_user_11: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_11 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_12 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_12 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_12: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_12: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_12 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_12 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_12 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_12 INFO test_logger:queue_manager.py:349 État invalide pour test_user_12: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_12 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_13 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_13 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_13: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_13: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_13 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_13 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_13 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_13 INFO test_logger:queue_manager.py:349 État invalide pour test_user_13: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_13 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_14 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_14 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_14: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_14: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_14 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_14 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_14 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_14 INFO test_logger:queue_manager.py:349 État invalide pour test_user_14: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_14 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_15 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_15 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_15: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_15: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_15 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_15 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_15 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_15 INFO test_logger:queue_manager.py:349 État invalide pour test_user_15: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_15 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_16 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_16 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_16: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_16: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_16 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_16 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_16 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_16 INFO test_logger:queue_manager.py:349 État invalide pour test_user_16: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_16 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_17 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_17 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_17: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_17: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_17 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_17 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_17 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_17 INFO test_logger:queue_manager.py:349 État invalide pour test_user_17: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_17 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_18 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_18 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_18: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_18: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_18 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_18 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_18 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_18 INFO test_logger:queue_manager.py:349 État invalide pour test_user_18: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_18 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_19 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_19 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_19: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_19: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_19 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_19 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_19 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_19 INFO test_logger:queue_manager.py:349 État invalide pour test_user_19: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_19 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_20 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_20 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_20: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_20: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_20 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_20 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_20 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_20 INFO test_logger:queue_manager.py:349 État invalide pour test_user_20: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_20 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_21 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_21 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_21: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_21: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_21 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_21 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_21 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_21 INFO test_logger:queue_manager.py:349 État invalide pour test_user_21: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_21 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_22 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_22 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_22: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_22: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_22 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_22 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_22 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_22 INFO test_logger:queue_manager.py:349 État invalide pour test_user_22: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_22 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_23 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_23 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_23: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_23: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_23 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_23 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_23 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_23 INFO test_logger:queue_manager.py:349 État invalide pour test_user_23: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_23 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_24 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_24 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_24: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_24: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_24 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_24 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_24 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_24 INFO test_logger:queue_manager.py:349 État invalide pour test_user_24: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_24 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_25 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_25 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_25: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_25: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_25 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_25 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_25 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_25 INFO test_logger:queue_manager.py:349 État invalide pour test_user_25: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_25 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_26 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_26 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_26: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_26: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_26 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_26 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_26 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_26 INFO test_logger:queue_manager.py:349 État invalide pour test_user_26: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_26 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_27 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_27 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_27: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_27: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_27 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_27 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_27 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_27 INFO test_logger:queue_manager.py:349 État invalide pour test_user_27: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_27 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_28 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_28 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_28: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_28: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_28 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_28 INFO test_logger:queue_manager.py:349 État invalide pour test_user_28: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_28 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_29 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_29 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_29: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_29: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_29 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_29 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_29 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_29 INFO test_logger:queue_manager.py:349 État invalide pour test_user_29: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_29 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_30 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_30 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_30: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_30: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_30 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_30 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_30 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_30 INFO test_logger:queue_manager.py:349 État invalide pour test_user_30: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_30 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_31 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_31 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_31: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_31: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_31 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_31 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_31 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_31 INFO test_logger:queue_manager.py:349 État invalide pour test_user_31: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_31 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_32 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_32 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_32: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_32: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_32 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_32 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_32 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_32 INFO test_logger:queue_manager.py:349 État invalide pour test_user_32: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_32 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_33 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_33 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_33: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_33: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_33 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_33 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_33 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_33 INFO test_logger:queue_manager.py:349 État invalide pour test_user_33: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_33 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_34 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_34 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_34: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_34: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_34 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_34 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_34 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_34 INFO test_logger:queue_manager.py:349 État invalide pour test_user_34: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_34 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_35 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_35 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_35: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_35: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_35 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_35 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_35 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_35 INFO test_logger:queue_manager.py:349 État invalide pour test_user_35: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_35 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_36 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_36 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_36: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_36: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_36 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_36 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_36 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_36 INFO test_logger:queue_manager.py:349 État invalide pour test_user_36: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_36 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_37 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_37 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_37: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_37: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_37 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_37 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_37 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_37 INFO test_logger:queue_manager.py:349 État invalide pour test_user_37: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_37 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_38 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_38 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_38: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_38: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_38 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_38 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_38 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_38 INFO test_logger:queue_manager.py:349 État invalide pour test_user_38: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_38 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_39 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_39 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_39: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_39: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_39 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_39 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_39 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_39 INFO test_logger:queue_manager.py:349 État invalide pour test_user_39: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_39 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_40 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_40 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_40: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_40: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_40 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_40 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_40 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_40 INFO test_logger:queue_manager.py:349 État invalide pour test_user_40: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_40 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_41 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_41 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_41: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_41: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_41 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_41 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_41 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_41 INFO test_logger:queue_manager.py:349 État invalide pour test_user_41: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_41 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_42 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_42 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_42: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_42: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_42 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_42 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_42 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_42 INFO test_logger:queue_manager.py:349 État invalide pour test_user_42: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_42 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_43 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_43 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_43: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_43: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_43 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_43 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_43 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_43 INFO test_logger:queue_manager.py:349 État invalide pour test_user_43: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_43 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_44 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_44 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_44: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_44: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_44 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_44 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_44 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_44 INFO test_logger:queue_manager.py:349 État invalide pour test_user_44: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_44 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_45 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_45 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_45: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_45: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_45 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_45 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_45 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_45 INFO test_logger:queue_manager.py:349 État invalide pour test_user_45: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_45 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_46 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_46 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_46: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_46: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_46 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_46 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_46 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_46 INFO test_logger:queue_manager.py:349 État invalide pour test_user_46: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_46 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_47 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_47 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_47: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_47: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_47 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_47 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_47 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_47 INFO test_logger:queue_manager.py:349 État invalide pour test_user_47: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_47 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_48 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_48 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_48: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_48: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_48 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_48 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_48 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_48 INFO test_logger:queue_manager.py:349 État invalide pour test_user_48: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_48 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_49 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_49 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_49: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_49: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_49 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_49 INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_49 INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_49 INFO test_logger:queue_manager.py:349 État invalide pour test_user_49: déjà en draft ou actif INFO test_logger:queue_manager.py:444 Connexion confirmée pour test_user_49 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_50 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_50 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_50: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_50: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_50 �[31mERROR test_api_endpoints:test_api_endpoints.py:110 Test failed with error: 'position' �[31mERROR test_api_endpoints:test_api_endpoints.py:111 État final: �[31mERROR test_api_endpoints:test_api_endpoints.py:112 Active users: {'test_user_48', 'test_user_34', 'test_user_35', 'test_user_44', 'test_user_4', 'test_user_32', 'test_user_46', 'test_user_25', 'test_user_36', 'test_user_31', 'test_user_7', 'test_user_20', 'test_user_2', 'test_user_5', 'test_user_47', 'test_user_39', 'test_user_49', 'test_user_9', 'test_user_27', 'test_user_17', 'test_user_22', 'test_user_13', 'test_user_18', 'test_user_19', 'test_user_33', 'test_user_8', 'test_user_43', 'test_user_16', 'test_user_45', 'test_user_40', 'test_user_6', 'test_user_42', 'test_user_37', 'test_user_38', 'test_user_41', 'test_user_28', 'test_user_3', 'test_user_11', 'test_user_15', 'test_user_14', 'test_user_10', 'test_user_21', 'test_user_29', 'test_user_26', 'test_user_30', 'test_user_24', 'test_user_12', 'test_user_0', 'test_user_1', 'test_user_23'} �[31mERROR test_api_endpoints:test_api_endpoints.py:113 Queued users: {'test_user_50'} �[31mERROR test_api_endpoints:test_api_endpoints.py:114 Draft users: set() �[31m__________________________ TestAPI.test_timers_async ___________________________ self = <test_api_endpoints.TestAPI object at 0xffffb424fdf0> test_client = <httpx.AsyncClient object at 0xffffb405cf30> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> test_logger = <Logger test_logger (INFO)> > ??? �[31mE KeyError: 'timer_type' �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_api_endpoints.py:217: KeyError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:10:21 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:10:21 - test_logger - INFO - QueueManager initialisé avec succès 2025-01-09 21:10:21 - test_logger - INFO - Client de test initialisé avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:155 QueueManager initialisé avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:10:21 - test_logger - INFO - Mode Celery configuré: EAGER=True 2025-01-09 21:10:21 - test_logger - INFO - File active remplie 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_timers 2025-01-09 21:10:21 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:21 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_timers avec statut None 2025-01-09 21:10:21 - test_logger - INFO - Résultats de la transaction Redis pour test_user_timers: [1, 1, 1] 2025-01-09 21:10:21 - test_logger - INFO - Vérification post-transaction pour test_user_timers: queued=1, in_waiting=True 2025-01-09 21:10:21 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_timers 2025-01-09 21:10:21 - test_logger - INFO - Utilisateur test_user_timers ajouté à la file 2025-01-09 21:10:21 - test_logger - INFO - Récupération des timers pour test_user_timers 2025-01-09 21:10:21 - test_logger - WARNING - Aucun timer actif pour test_user_timers 2025-01-09 21:10:21 - test_logger - WARNING - Nettoyage de l'état incohérent pour test_user_timers 2025-01-09 21:10:21 - test_logger - INFO - État nettoyé pour test_user_timers 2025-01-09 21:10:21 - test_logger - INFO - Nettoyage terminé ------------------------------ Captured log call ------------------------------- INFO test_logger:test_api_endpoints.py:195 Mode Celery configuré: EAGER=True INFO test_logger:test_api_endpoints.py:206 File active remplie INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_timers INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_timers avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_timers: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_timers: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_timers INFO test_logger:test_api_endpoints.py:211 Utilisateur test_user_timers ajouté à la file INFO test_logger:queue_manager.py:680 Récupération des timers pour test_user_timers WARNING test_logger:queue_manager.py:696 Aucun timer actif pour test_user_timers WARNING test_logger:queue_manager.py:734 Nettoyage de l'état incohérent pour test_user_timers INFO test_logger:queue_manager.py:745 État nettoyé pour test_user_timers INFO test_logger:test_api_endpoints.py:269 Nettoyage terminé �[31m____________________ TestIntegration.test_concurrent_users _____________________ self = <test_integration.TestIntegration object at 0xffffb419ccd0> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> test_logger = <Logger test_logger (INFO)> > ??? �[31mE AssertionError: La file d'attente devrait contenir 5 utilisateurs �[31mE assert 1 == 5 �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_integration.py:33: AssertionError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:10:22 - test_logger - INFO - Connexion Redis établie avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:10:22 - test_logger - INFO - Démarrage du test d'ajout concurrent 2025-01-09 21:10:22 - test_logger - INFO - Ajout concurrent de 5 utilisateurs 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout de l'utilisateur user_0 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout de l'utilisateur user_1 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout de l'utilisateur user_2 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout de l'utilisateur user_3 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout de l'utilisateur user_4 2025-01-09 21:10:22 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout à la file d'attente pour user_0 avec statut None 2025-01-09 21:10:22 - test_logger - INFO - Résultats de la transaction Redis pour user_0: [1, 1, 1] 2025-01-09 21:10:22 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:22 - test_logger - INFO - Vérification post-transaction pour user_0: queued=1, in_waiting=True 2025-01-09 21:10:22 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:22 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:22 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout à la file d'attente pour user_1 avec statut None 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout à la file d'attente pour user_2 avec statut None 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout à la file d'attente pour user_3 avec statut None 2025-01-09 21:10:22 - test_logger - INFO - Tentative d'ajout à la file d'attente pour user_4 avec statut None 2025-01-09 21:10:22 - test_logger - INFO - Résultats de la transaction Redis pour user_1: [2, 1, 2] 2025-01-09 21:10:22 - test_logger - INFO - Résultats de la transaction Redis pour user_2: [3, 1, 3] 2025-01-09 21:10:22 - test_logger - INFO - Résultats de la transaction Redis pour user_3: [4, 1, 4] 2025-01-09 21:10:22 - test_logger - INFO - Résultats de la transaction Redis pour user_4: [5, 1, 5] 2025-01-09 21:10:22 - test_logger - INFO - Aucun historique de statuts trouvé pour user_0 2025-01-09 21:10:22 - test_logger - INFO - Vérification post-transaction pour user_1: queued=1, in_waiting=True 2025-01-09 21:10:22 - test_logger - INFO - Vérification post-transaction pour user_3: queued=1, in_waiting=True 2025-01-09 21:10:22 - test_logger - INFO - Vérification post-transaction pour user_2: queued=1, in_waiting=True 2025-01-09 21:10:22 - test_logger - INFO - Vérification post-transaction pour user_4: queued=1, in_waiting=True 2025-01-09 21:10:22 - test_logger - INFO - Aucun historique de statuts trouvé pour user_1 2025-01-09 21:10:22 - test_logger - INFO - Aucun historique de statuts trouvé pour user_3 2025-01-09 21:10:22 - test_logger - INFO - Aucun historique de statuts trouvé pour user_2 2025-01-09 21:10:22 - test_logger - INFO - Aucun historique de statuts trouvé pour user_4 2025-01-09 21:10:22 - test_logger - INFO - État immédiat - File d'attente: 1, Utilisateurs en file: 0 ------------------------------ Captured log call ------------------------------- INFO test_logger:test_integration.py:11 Démarrage du test d'ajout concurrent INFO test_logger:test_integration.py:20 Ajout concurrent de 5 utilisateurs INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur user_0 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur user_1 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur user_2 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur user_3 INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur user_4 INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour user_0 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour user_0: [1, 1, 1] INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:227 Vérification post-transaction pour user_0: queued=1, in_waiting=True INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour user_1 avec statut None INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour user_2 avec statut None INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour user_3 avec statut None INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour user_4 avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour user_1: [2, 1, 2] INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour user_2: [3, 1, 3] INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour user_3: [4, 1, 4] INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour user_4: [5, 1, 5] INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour user_0 INFO test_logger:queue_manager.py:227 Vérification post-transaction pour user_1: queued=1, in_waiting=True INFO test_logger:queue_manager.py:227 Vérification post-transaction pour user_3: queued=1, in_waiting=True INFO test_logger:queue_manager.py:227 Vérification post-transaction pour user_2: queued=1, in_waiting=True INFO test_logger:queue_manager.py:227 Vérification post-transaction pour user_4: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour user_1 INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour user_3 INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour user_2 INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour user_4 INFO test_logger:test_integration.py:30 État immédiat - File d'attente: 1, Utilisateurs en file: 0 �[31m__________________ TestTimers.test_get_timers_endpoint_draft ___________________ self = <test_timers.TestTimers object at 0xffffb40b0050> test_client = <httpx.AsyncClient object at 0xffffb370f8a0> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> > ??? �[31mE KeyError: 'timer_type' �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_timers.py:79: KeyError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:10:27 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:10:27 - test_logger - INFO - Client de test initialisé avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:10:27 - test_logger - INFO - Récupération des timers pour test_user_api_draft 2025-01-09 21:10:46 - test_logger - ERROR - Erreur lors de la récupération des timers pour test_user_api_draft: Error 111 connecting to localhost:6379. Connection refused. ------------------------------ Captured log call ------------------------------- INFO test_logger:queue_manager.py:680 Récupération des timers pour test_user_api_draft WARNING kombu.connection:connection.py:669 No hostname was supplied. Reverting to default 'localhost' �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (0/20) now. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (1/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (2/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (3/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (4/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (5/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (6/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (7/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (8/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (9/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (10/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (11/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (12/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (13/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (14/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (15/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (16/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (17/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (18/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (19/20) in 1.00 second. �[31mCRITICAL celery.backends.redis:redis.py:132 Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted. �[31mERROR test_logger:queue_manager.py:728 Erreur lors de la récupération des timers pour test_user_api_draft: Error 111 connecting to localhost:6379. Connection refused. �[31m_________________ TestTimers.test_get_timers_endpoint_session __________________ self = <test_timers.TestTimers object at 0xffffb40b0180> test_client = <httpx.AsyncClient object at 0xffffb2d31350> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> > ??? �[31mE KeyError: 'timer_type' �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_timers.py:97: KeyError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:10:46 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:10:46 - test_logger - INFO - Client de test initialisé avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:10:46 - test_logger - INFO - Récupération des timers pour test_user_api_session 2025-01-09 21:11:06 - test_logger - ERROR - Erreur lors de la récupération des timers pour test_user_api_session: Error 111 connecting to localhost:6379. Connection refused. ------------------------------ Captured log call ------------------------------- INFO test_logger:queue_manager.py:680 Récupération des timers pour test_user_api_session �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (0/20) now. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (1/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (2/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (3/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (4/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (5/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (6/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (7/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (8/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (9/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (10/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (11/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (12/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (13/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (14/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (15/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (16/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (17/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (18/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (19/20) in 1.00 second. �[31mCRITICAL celery.backends.redis:redis.py:132 Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted. �[31mERROR test_logger:queue_manager.py:728 Erreur lors de la récupération des timers pour test_user_api_session: Error 111 connecting to localhost:6379. Connection refused. �[31m___________________ TestTimers.test_get_timers_endpoint_both ___________________ self = <test_timers.TestTimers object at 0xffffb40b4290> test_client = <httpx.AsyncClient object at 0xffffb2d32d50> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> > ??? �[31mE KeyError: 'timer_type' �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_timers.py:124: KeyError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:11:06 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:11:06 - test_logger - INFO - Client de test initialisé avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:11:06 - test_logger - INFO - Récupération des timers pour test_user_api_session 2025-01-09 21:11:25 - test_logger - ERROR - Erreur lors de la récupération des timers pour test_user_api_session: Error 111 connecting to localhost:6379. Connection refused. 2025-01-09 21:11:25 - test_logger - INFO - Récupération des timers pour test_user_api_draft 2025-01-09 21:11:44 - test_logger - ERROR - Erreur lors de la récupération des timers pour test_user_api_draft: Error 111 connecting to localhost:6379. Connection refused. ------------------------------ Captured log call ------------------------------- INFO test_logger:queue_manager.py:680 Récupération des timers pour test_user_api_session �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (0/20) now. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (1/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (2/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (3/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (4/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (5/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (6/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (7/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (8/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (9/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (10/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (11/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (12/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (13/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (14/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (15/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (16/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (17/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (18/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (19/20) in 1.00 second. �[31mCRITICAL celery.backends.redis:redis.py:132 Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted. �[31mERROR test_logger:queue_manager.py:728 Erreur lors de la récupération des timers pour test_user_api_session: Error 111 connecting to localhost:6379. Connection refused. INFO test_logger:queue_manager.py:680 Récupération des timers pour test_user_api_draft �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (0/20) now. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (1/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (2/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (3/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (4/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (5/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (6/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (7/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (8/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (9/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (10/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (11/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (12/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (13/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (14/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (15/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (16/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (17/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (18/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (19/20) in 1.00 second. �[31mCRITICAL celery.backends.redis:redis.py:132 Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted. �[31mERROR test_logger:queue_manager.py:728 Erreur lors de la récupération des timers pour test_user_api_draft: Error 111 connecting to localhost:6379. Connection refused. �[31m___________________ TestTimers.test_pubsub_connection_draft ____________________ self = <test_timers.TestTimers object at 0xffffb41497b0> queue_manager_with_checker = <app.queue_manager.QueueManager object at 0xffffb2d6d850> test_client = <httpx.AsyncClient object at 0xffffb2d863f0> test_logger = <Logger test_logger (INFO)> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> > ??? �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_timers.py:184: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/asyncio/tasks.py:507: in wait_for return await fut _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > ??? �[31mE AssertionError: Timer type incorrect: {} �[31mE assert None == 'draft' �[31mE + where None = <built-in method get of dict object at 0xffffb3762dc0>('timer_type') �[31mE + where <built-in method get of dict object at 0xffffb3762dc0> = {}.get �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_timers.py:180: AssertionError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:11:44 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:11:44 - test_logger - INFO - Slot checker démarré avec succès 2025-01-09 21:11:44 - test_logger - INFO - Client de test initialisé avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:179 Slot checker démarré avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:11:44 - test_logger - INFO - Démarrage du test pubsub draft 2025-01-09 21:11:44 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_pubsub_draft 2025-01-09 21:11:44 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:11:44 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_pubsub_draft avec statut None 2025-01-09 21:11:44 - test_logger - INFO - Résultats de la transaction Redis pour test_user_pubsub_draft: [1, 1, 1] 2025-01-09 21:11:44 - test_logger - INFO - Vérification post-transaction pour test_user_pubsub_draft: queued=1, in_waiting=True 2025-01-09 21:11:44 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_pubsub_draft 2025-01-09 21:11:44 - test_logger - INFO - Tentative d'offre de slot à test_user_pubsub_draft 2025-01-09 21:11:44 - test_logger - INFO - Slot offert avec succès à test_user_pubsub_draft 2025-01-09 21:11:44 - test_logger - INFO - Utilisateur placé en draft avec succès 2025-01-09 21:11:44 - test_logger - INFO - Récupération des timers pour test_user_pubsub_draft 2025-01-09 21:12:03 - test_logger - ERROR - Erreur lors de la récupération des timers pour test_user_pubsub_draft: Error 111 connecting to localhost:6379. Connection refused. 2025-01-09 21:12:03 - test_logger - INFO - Timers reçus: {} 2025-01-09 21:12:03 - test_logger - ERROR - Erreur lors du test pubsub draft: Timer type incorrect: {} assert None == 'draft' + where None = <built-in method get of dict object at 0xffffb3762dc0>('timer_type') + where <built-in method get of dict object at 0xffffb3762dc0> = {}.get 2025-01-09 21:12:03 - test_logger - INFO - Fin du test pubsub draft ------------------------------ Captured log call ------------------------------- INFO test_logger:test_timers.py:148 Démarrage du test pubsub draft INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_pubsub_draft INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_pubsub_draft avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_pubsub_draft: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_pubsub_draft: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_pubsub_draft INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_pubsub_draft INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_pubsub_draft INFO test_logger:test_timers.py:169 Utilisateur placé en draft avec succès INFO test_logger:queue_manager.py:680 Récupération des timers pour test_user_pubsub_draft �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (0/20) now. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (1/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (2/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (3/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (4/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (5/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (6/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (7/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (8/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (9/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (10/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (11/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (12/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (13/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (14/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (15/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (16/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (17/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (18/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (19/20) in 1.00 second. �[31mCRITICAL celery.backends.redis:redis.py:132 Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted. �[31mERROR test_logger:queue_manager.py:728 Erreur lors de la récupération des timers pour test_user_pubsub_draft: Error 111 connecting to localhost:6379. Connection refused. INFO test_logger:test_timers.py:177 Timers reçus: {} �[31mERROR test_logger:test_timers.py:190 Erreur lors du test pubsub draft: Timer type incorrect: {} assert None == 'draft' + where None = <built-in method get of dict object at 0xffffb3762dc0>('timer_type') + where <built-in method get of dict object at 0xffffb3762dc0> = {}.get INFO test_logger:test_timers.py:196 Fin du test pubsub draft �[31m___________________ TestTimers.test_pubsub_multiple_updates ____________________ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: > sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:357: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/redis/retry.py:62: in call_with_retry return do() �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:358: in <lambda> lambda: self._connect(), lambda error: self.disconnect(error) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:730: in _connect raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def _connect(self): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() err = None for res in socket.getaddrinfo( self.host, self.port, self.socket_type, socket.SOCK_STREAM ): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.socket_keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) for k, v in self.socket_keepalive_options.items(): sock.setsockopt(socket.IPPROTO_TCP, k, v) # set the socket_connect_timeout before we connect sock.settimeout(self.socket_connect_timeout) # connect > sock.connect(socket_address) �[31mE ConnectionRefusedError: [Errno 111] Connection refused �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:718: ConnectionRefusedError During handling of the above exception, another exception occurred: self = <celery.backends.redis.ResultConsumer object at 0xffffb2d2ccd0> @contextmanager def reconnect_on_error(self): try: > yield �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:127: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:177: in _consume_from self._pubsub.subscribe(key) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:957: in subscribe ret_val = self.execute_command("SUBSCRIBE", *new_channels.keys()) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:786: in execute_command self.connection = self.connection_pool.get_connection( �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:1422: in get_connection connection.connect() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) except socket.timeout: raise TimeoutError("Timeout connecting to server") except OSError as e: > raise ConnectionError(self._error_message(e)) �[31mE redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused. �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:363: ConnectionError During handling of the above exception, another exception occurred: self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: > sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:357: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/redis/retry.py:62: in call_with_retry return do() �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:358: in <lambda> lambda: self._connect(), lambda error: self.disconnect(error) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:730: in _connect raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def _connect(self): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() err = None for res in socket.getaddrinfo( self.host, self.port, self.socket_type, socket.SOCK_STREAM ): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.socket_keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) for k, v in self.socket_keepalive_options.items(): sock.setsockopt(socket.IPPROTO_TCP, k, v) # set the socket_connect_timeout before we connect sock.settimeout(self.socket_connect_timeout) # connect > sock.connect(socket_address) �[31mE ConnectionRefusedError: [Errno 111] Connection refused �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:718: ConnectionRefusedError During handling of the above exception, another exception occurred: self = <Connection: redis://localhost:6379 at 0xffffb3733c50> ConnectionError = <class 'kombu.exceptions.OperationalError'> ChannelError = <class 'kombu.exceptions.OperationalError'> @contextmanager def _reraise_as_library_errors( self, ConnectionError=exceptions.OperationalError, ChannelError=exceptions.OperationalError): try: > yield �[31m/usr/local/lib/python3.13/site-packages/kombu/connection.py:472: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/celery/app/base.py:800: in send_task self.backend.on_task_call(P, task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:373: in on_task_call self.result_consumer.consume_from(task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:169: in consume_from return self.start(task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:147: in start self._consume_from(initial_task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:176: in _consume_from with self.reconnect_on_error(): �[31m/usr/local/lib/python3.13/contextlib.py:162: in __exit__ self.gen.throw(value) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:130: in reconnect_on_error self._ensure(self._reconnect_pubsub, ()) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:384: in ensure return retry_over_time( �[31m/usr/local/lib/python3.13/site-packages/kombu/utils/functional.py:318: in retry_over_time return fun(*args, **kwargs) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:106: in _reconnect_pubsub metas = self.backend.client.mget(self.subscribed_to) �[31m/usr/local/lib/python3.13/site-packages/redis/commands/core.py:2009: in mget return self.execute_command("MGET", *args, **options) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:559: in execute_command return self._execute_command(*args, **options) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:565: in _execute_command conn = self.connection or pool.get_connection(command_name, **options) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:1422: in get_connection connection.connect() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) except socket.timeout: raise TimeoutError("Timeout connecting to server") except OSError as e: > raise ConnectionError(self._error_message(e)) �[31mE redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused. �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:363: ConnectionError The above exception was the direct cause of the following exception: self = <test_timers.TestTimers object at 0xffffb415d850> test_client = <httpx.AsyncClient object at 0xffffb2d4d9b0> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> queue_manager_with_checker = <app.queue_manager.QueueManager object at 0xffffb2d6f4d0> test_logger = <Logger test_logger (INFO)> > ??? �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_timers.py:357: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/celery/app/base.py:798: in send_task with P.connection._reraise_as_library_errors(): �[31m/usr/local/lib/python3.13/contextlib.py:162: in __exit__ self.gen.throw(value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Connection: redis://localhost:6379 at 0xffffb3733c50> ConnectionError = <class 'kombu.exceptions.OperationalError'> ChannelError = <class 'kombu.exceptions.OperationalError'> @contextmanager def _reraise_as_library_errors( self, ConnectionError=exceptions.OperationalError, ChannelError=exceptions.OperationalError): try: yield except (ConnectionError, ChannelError): raise except self.recoverable_connection_errors as exc: > raise ConnectionError(str(exc)) from exc �[31mE kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection refused. �[31m/usr/local/lib/python3.13/site-packages/kombu/connection.py:476: OperationalError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:12:07 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:12:07 - test_logger - INFO - Client de test initialisé avec succès 2025-01-09 21:12:07 - test_logger - INFO - Slot checker démarré avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès INFO test_logger:conftest.py:179 Slot checker démarré avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:12:07 - test_logger - INFO - Celery configuré en mode asynchrone 2025-01-09 21:12:07 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_pubsub_multiple 2025-01-09 21:12:07 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:12:07 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_pubsub_multiple avec statut None 2025-01-09 21:12:07 - test_logger - INFO - Résultats de la transaction Redis pour test_user_pubsub_multiple: [1, 1, 1] 2025-01-09 21:12:07 - test_logger - INFO - Vérification post-transaction pour test_user_pubsub_multiple: queued=1, in_waiting=True 2025-01-09 21:12:07 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_pubsub_multiple 2025-01-09 21:12:07 - test_logger - INFO - Tentative d'offre de slot à test_user_pubsub_multiple 2025-01-09 21:12:07 - test_logger - INFO - Slot offert avec succès à test_user_pubsub_multiple 2025-01-09 21:12:07 - test_logger - INFO - Utilisateur test_user_pubsub_multiple placé en draft avec succès 2025-01-09 21:12:07 - test_logger - INFO - Abonnement PubSub réussi pour le channel timer:channel:test_user_pubsub_multiple 2025-01-09 21:12:07 - test_logger - INFO - TTL du draft: 300 2025-01-09 21:12:26 - test_logger - INFO - Test terminé, nettoyage effectué ------------------------------ Captured log call ------------------------------- INFO test_logger:test_timers.py:318 Celery configuré en mode asynchrone INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_pubsub_multiple INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_pubsub_multiple avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_pubsub_multiple: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_pubsub_multiple: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_pubsub_multiple INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_pubsub_multiple INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_pubsub_multiple INFO test_logger:test_timers.py:340 Utilisateur test_user_pubsub_multiple placé en draft avec succès INFO test_logger:test_timers.py:348 Abonnement PubSub réussi pour le channel timer:channel:test_user_pubsub_multiple INFO test_logger:test_timers.py:353 TTL du draft: 300 �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (0/20) now. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (1/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (2/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (3/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (4/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (5/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (6/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (7/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (8/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (9/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (10/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (11/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (12/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (13/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (14/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (15/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (16/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (17/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (18/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (19/20) in 1.00 second. �[31mCRITICAL celery.backends.redis:redis.py:132 Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted. INFO test_logger:test_timers.py:411 Test terminé, nettoyage effectué �[31m______________ TestTimersAsync.test_pubsub_multiple_updates_async ______________ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: > sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:357: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/redis/retry.py:62: in call_with_retry return do() �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:358: in <lambda> lambda: self._connect(), lambda error: self.disconnect(error) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:730: in _connect raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def _connect(self): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() err = None for res in socket.getaddrinfo( self.host, self.port, self.socket_type, socket.SOCK_STREAM ): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.socket_keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) for k, v in self.socket_keepalive_options.items(): sock.setsockopt(socket.IPPROTO_TCP, k, v) # set the socket_connect_timeout before we connect sock.settimeout(self.socket_connect_timeout) # connect > sock.connect(socket_address) �[31mE ConnectionRefusedError: [Errno 111] Connection refused �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:718: ConnectionRefusedError During handling of the above exception, another exception occurred: self = <celery.backends.redis.ResultConsumer object at 0xffffb4072e90> @contextmanager def reconnect_on_error(self): try: > yield �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:127: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:177: in _consume_from self._pubsub.subscribe(key) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:957: in subscribe ret_val = self.execute_command("SUBSCRIBE", *new_channels.keys()) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:786: in execute_command self.connection = self.connection_pool.get_connection( �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:1422: in get_connection connection.connect() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) except socket.timeout: raise TimeoutError("Timeout connecting to server") except OSError as e: > raise ConnectionError(self._error_message(e)) �[31mE redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused. �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:363: ConnectionError During handling of the above exception, another exception occurred: self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: > sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:357: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/redis/retry.py:62: in call_with_retry return do() �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:358: in <lambda> lambda: self._connect(), lambda error: self.disconnect(error) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:730: in _connect raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def _connect(self): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() err = None for res in socket.getaddrinfo( self.host, self.port, self.socket_type, socket.SOCK_STREAM ): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.socket_keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) for k, v in self.socket_keepalive_options.items(): sock.setsockopt(socket.IPPROTO_TCP, k, v) # set the socket_connect_timeout before we connect sock.settimeout(self.socket_connect_timeout) # connect > sock.connect(socket_address) �[31mE ConnectionRefusedError: [Errno 111] Connection refused �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:718: ConnectionRefusedError During handling of the above exception, another exception occurred: self = <Connection: redis://localhost:6379 at 0xffffb3733c50> ConnectionError = <class 'kombu.exceptions.OperationalError'> ChannelError = <class 'kombu.exceptions.OperationalError'> @contextmanager def _reraise_as_library_errors( self, ConnectionError=exceptions.OperationalError, ChannelError=exceptions.OperationalError): try: > yield �[31m/usr/local/lib/python3.13/site-packages/kombu/connection.py:472: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/celery/app/base.py:800: in send_task self.backend.on_task_call(P, task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:373: in on_task_call self.result_consumer.consume_from(task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:169: in consume_from return self.start(task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:147: in start self._consume_from(initial_task_id) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:176: in _consume_from with self.reconnect_on_error(): �[31m/usr/local/lib/python3.13/contextlib.py:162: in __exit__ self.gen.throw(value) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:130: in reconnect_on_error self._ensure(self._reconnect_pubsub, ()) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:384: in ensure return retry_over_time( �[31m/usr/local/lib/python3.13/site-packages/kombu/utils/functional.py:318: in retry_over_time return fun(*args, **kwargs) �[31m/usr/local/lib/python3.13/site-packages/celery/backends/redis.py:106: in _reconnect_pubsub metas = self.backend.client.mget(self.subscribed_to) �[31m/usr/local/lib/python3.13/site-packages/redis/commands/core.py:2009: in mget return self.execute_command("MGET", *args, **options) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:559: in execute_command return self._execute_command(*args, **options) �[31m/usr/local/lib/python3.13/site-packages/redis/client.py:565: in _execute_command conn = self.connection or pool.get_connection(command_name, **options) �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:1422: in get_connection connection.connect() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <redis.connection.Connection(host=localhost,port=6379,db=1)> def connect(self): "Connects to the Redis server if not already connected" if self._sock: return try: sock = self.retry.call_with_retry( lambda: self._connect(), lambda error: self.disconnect(error) ) except socket.timeout: raise TimeoutError("Timeout connecting to server") except OSError as e: > raise ConnectionError(self._error_message(e)) �[31mE redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused. �[31m/usr/local/lib/python3.13/site-packages/redis/connection.py:363: ConnectionError The above exception was the direct cause of the following exception: self = <test_timers_async.TestTimersAsync object at 0xffffb419e5d0> test_client = <httpx.AsyncClient object at 0xffffb2d07860> redis_client = <redis.asyncio.client.Redis(<redis.asyncio.connection.ConnectionPool(<redis.asyncio.connection.Connection(host=redis-test,port=6379,db=1)>)>)> queue_manager_with_checker = <app.queue_manager.QueueManager object at 0xffffb22fec50> test_logger = <Logger test_logger (INFO)> > ??? �[31m/Users/chrysostomebeltran/Documents/GitHub/redis_queue/tests/test_timers_async.py:53: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ �[31m/usr/local/lib/python3.13/site-packages/celery/app/base.py:798: in send_task with P.connection._reraise_as_library_errors(): �[31m/usr/local/lib/python3.13/contextlib.py:162: in __exit__ self.gen.throw(value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Connection: redis://localhost:6379 at 0xffffb3733c50> ConnectionError = <class 'kombu.exceptions.OperationalError'> ChannelError = <class 'kombu.exceptions.OperationalError'> @contextmanager def _reraise_as_library_errors( self, ConnectionError=exceptions.OperationalError, ChannelError=exceptions.OperationalError): try: yield except (ConnectionError, ChannelError): raise except self.recoverable_connection_errors as exc: > raise ConnectionError(str(exc)) from exc �[31mE kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection refused. �[31m/usr/local/lib/python3.13/site-packages/kombu/connection.py:476: OperationalError ---------------------------- Captured stderr setup ----------------------------- 2025-01-09 21:12:32 - test_logger - INFO - Connexion Redis établie avec succès 2025-01-09 21:12:32 - test_logger - INFO - QueueManager initialisé avec succès 2025-01-09 21:12:32 - test_logger - INFO - Client de test initialisé avec succès 2025-01-09 21:12:32 - test_logger - INFO - Slot checker démarré avec succès ------------------------------ Captured log setup ------------------------------ INFO test_logger:conftest.py:132 Connexion Redis établie avec succès INFO test_logger:conftest.py:155 QueueManager initialisé avec succès INFO test_logger:conftest.py:168 Client de test initialisé avec succès INFO test_logger:conftest.py:179 Slot checker démarré avec succès ----------------------------- Captured stderr call ----------------------------- 2025-01-09 21:12:32 - test_logger - INFO - Celery configuré en mode asynchrone 2025-01-09 21:12:32 - test_logger - INFO - Tentative d'ajout de l'utilisateur test_user_pubsub_multiple_async 2025-01-09 21:12:32 - test_logger - INFO - Statut actuel: {'status': None} 2025-01-09 21:12:32 - test_logger - INFO - Tentative d'ajout à la file d'attente pour test_user_pubsub_multiple_async avec statut None 2025-01-09 21:12:32 - test_logger - INFO - Résultats de la transaction Redis pour test_user_pubsub_multiple_async: [1, 1, 1] 2025-01-09 21:12:32 - test_logger - INFO - Vérification post-transaction pour test_user_pubsub_multiple_async: queued=1, in_waiting=True 2025-01-09 21:12:32 - test_logger - INFO - Aucun historique de statuts trouvé pour test_user_pubsub_multiple_async 2025-01-09 21:12:32 - test_logger - INFO - Tentative d'offre de slot à test_user_pubsub_multiple_async 2025-01-09 21:12:32 - test_logger - INFO - Slot offert avec succès à test_user_pubsub_multiple_async 2025-01-09 21:12:32 - test_logger - INFO - Utilisateur test_user_pubsub_multiple_async placé en draft avec succès 2025-01-09 21:12:32 - test_logger - INFO - Abonnement PubSub réussi pour le channel timer:channel:test_user_pubsub_multiple_async 2025-01-09 21:12:32 - test_logger - INFO - TTL du draft: 300 2025-01-09 21:12:51 - test_logger - INFO - Test terminé, nettoyage effectué ------------------------------ Captured log call ------------------------------- INFO test_logger:test_timers_async.py:14 Celery configuré en mode asynchrone INFO test_logger:queue_manager.py:194 Tentative d'ajout de l'utilisateur test_user_pubsub_multiple_async INFO test_logger:queue_manager.py:198 Statut actuel: {'status': None} INFO test_logger:queue_manager.py:212 Tentative d'ajout à la file d'attente pour test_user_pubsub_multiple_async avec statut None INFO test_logger:queue_manager.py:220 Résultats de la transaction Redis pour test_user_pubsub_multiple_async: [1, 1, 1] INFO test_logger:queue_manager.py:227 Vérification post-transaction pour test_user_pubsub_multiple_async: queued=1, in_waiting=True INFO test_logger:queue_manager.py:547 Aucun historique de statuts trouvé pour test_user_pubsub_multiple_async INFO test_logger:queue_manager.py:337 Tentative d'offre de slot à test_user_pubsub_multiple_async INFO test_logger:queue_manager.py:390 Slot offert avec succès à test_user_pubsub_multiple_async INFO test_logger:test_timers_async.py:36 Utilisateur test_user_pubsub_multiple_async placé en draft avec succès INFO test_logger:test_timers_async.py:44 Abonnement PubSub réussi pour le channel timer:channel:test_user_pubsub_multiple_async INFO test_logger:test_timers_async.py:49 TTL du draft: 300 �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (0/20) now. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (1/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (2/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (3/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (4/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (5/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (6/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (7/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (8/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (9/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (10/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (11/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (12/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (13/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (14/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (15/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (16/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (17/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (18/20) in 1.00 second. �[31mERROR celery.backends.redis:redis.py:391 Connection to Redis lost: Retry (19/20) in 1.00 second. �[31mCRITICAL celery.backends.redis:redis.py:132 Retry limit exceeded while trying to reconnect to the Celery redis result store backend. The Celery application must be restarted. INFO test_logger:test_timers_async.py:112 Test terminé, nettoyage effectué =============================== warnings summary =============================== tests/test_timers.py::TestTimers::test_get_timers_endpoint_draft tests/test_timers.py::TestTimers::test_get_timers_endpoint_both tests/test_timers.py::TestTimers::test_pubsub_connection_draft /app/app/queue_manager.py:714: AlwaysEagerIgnored: task_always_eager has no effect on send_task celery.send_task( tests/test_timers.py::TestTimers::test_get_timers_endpoint_session tests/test_timers.py::TestTimers::test_get_timers_endpoint_both /app/app/queue_manager.py:701: AlwaysEagerIgnored: task_always_eager has no effect on send_task celery.send_task( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ---------- coverage: platform linux, python 3.13.1-final-0 ----------- Name Stmts Miss Cover Missing ---------------------------------------------------- app/api_endpoints.py 6 6 0% 1-7 app/celery_app.py 6 6 0% 1-19 app/main.py 96 33 66% 22-23, 26-27, 30-38, 46-66, 86, 102, 110, 130-131, 141-151 app/queue_manager.py 486 145 70% 41-53, 72, 76-77, 128-130, 164-166, 187-189, 230-231, 244-245, 286, 311, 318-320, 353-354, 373, 393-400, 435, 447-454, 484-486, 533, 559-562, 585-586, 601, 611-619, 632-675, 706, 719, 746-747, 752-757, 766-809, 814-856, 908-910, 918-920 ---------------------------------------------------- TOTAL 594 190 68% �[36m=========================== short test summary info ============================ �[31mFAILED tests/test_api_endpoints.py::TestAPI::test_join_queue_flow_when_full - KeyError: 'position' �[31mFAILED tests/test_api_endpoints.py::TestAPI::test_timers_async - KeyError: 'timer_type' �[31mFAILED tests/test_integration.py::TestIntegration::test_concurrent_users - AssertionError: La file d'attente devrait contenir 5 utilisateurs �[31mFAILED tests/test_timers.py::TestTimers::test_get_timers_endpoint_draft - KeyError: 'timer_type' �[31mFAILED tests/test_timers.py::TestTimers::test_get_timers_endpoint_session - KeyError: 'timer_type' �[31mFAILED tests/test_timers.py::TestTimers::test_get_timers_endpoint_both - KeyError: 'timer_type' �[31mFAILED tests/test_timers.py::TestTimers::test_pubsub_connection_draft - AssertionError: Timer type incorrect: {} �[31mFAILED tests/test_timers.py::TestTimers::test_pubsub_multiple_updates - kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. ... �[31mFAILED tests/test_timers_async.py::TestTimersAsync::test_pubsub_multiple_updates_async - kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. ... �[31m============= �[31m9 failed, 25 passed, 5 warnings�[31m in 153.72s (0:02:33)�[31m =============

Table des matières

Fonctionnalités

  • 🔄 File d'attente en temps réel
  • 👥 Gestion de 50 utilisateurs simultanés
  • ⏲️ Sessions de 20 minutes
  • 🎟️ Système de réservation temporaire (draft)
  • 📊 Métriques en temps réel
  • 🔔 Notifications via Redis Pub/Sub

Architecture

  • FastAPI : APIrest et Websocket
  • Redis : Cache et pub/sub
  • Celery : Gestion des tâches asynchrones
  • Docker : Service management

Prérequis

  • Python 3.12+
  • Docker et Docker Compose
  • Poetry

📊 Schémas de la file d'attente

Queue Architecture

🏗️ Schémas de l'Architecture

Architecture

Installation

Installation avec Poetry

Installation des dépendances

poetry install

Activation de l'environnement virtuel

poetry shell

Docker compose

Lancement de tous les services

docker-compose up -d

Arrêt des services

docker-compose down

Configuration

Variables d'environnement

Redis Configuration

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0

Application Configuration

MAX_ACTIVE_USERS=50
SESSION_DURATION=1200 # 20 minutes
DRAFT_DURATION=300 # 5 minutes

Utilisation

Démarrage en mode dev

Lancement auto reload pour traquer les changements

poetry run dev run --reload

Lancement sur un port spécifique

poetry run dev run --port 8080

Démarrage en production

Avec Docker Compose

docker-compose up -d

Vérification des logs

docker-compose logs -f

Scripts CLI

Script de développement (poetry run dev)

Lancer l'application

dev run [--host] [--port] [--reload]

Gérer Docker

dev docker-up # Démarre les services
dev docker-down # Stop services
dev docker-logs # Affiche les logs

Script de test (poetry run test)

Lancer les tests

test run [--cov] [--html] [test_path]

Tests dans Docker

test docker [--logs] [--test-only]

Mise à jour de la documentation des tests

# Exécuter les tests et mettre à jour le README
test update-doc [test_path]

# Mettre à jour le README avec le dernier rapport sans relancer les tests
test update-doc --insert

Options de test

Option Description
--logs Affiche les logs détaillés des tests
--test-only Affiche uniquement les résultats des tests (sans logs Docker)
--cov Active la couverture de code
--html Génère un rapport HTML de couverture
--insert Met à jour le README avec le dernier rapport sans relancer les tests

Script de formatage (poetry run format)

option de formatage

option description
format black [--check] Formatage avec black
format isort Tri des imports
format lint Vérification avec flake8
format all Exécute tous les formatages

Script de test de charge (poetry run load-test)

Test utilisateur unique

load-test single USER_ID

Test de groupe

load-test group --size 50

Test de charge progressif

load-test load --users 200 --batch-size 20 --delay 5

Tests

Types de tests

  • Tests unitaires : Teste les composants individuellement
  • Tests d'intégration : Vérifie l'interaction entre les composants
  • Tests API : Valide les endpoints HTTP
  • Tests de charge : Évalue les performances sous charge

Exécution des tests

Tous les tests

poetry run test run

Avec couverture

poetry run test run --cov --html

Tests dans Docker

poetry run test docker

API Reference

Endpoints REST FastAPI

Endpoint Méthode Description
/queue/join/{user_id} POST Rejoindre la file d'attente
/queue/confirm/{user_id} POST Confirmer la connexion
/queue/leave/{user_id} POST Quitter la file
/queue/status/{user_id} GET Obtenir le statut
/queue/metrics GET Obtenir les métriques

États utilisateur

  • Waiting : En attente dans la file (position > 0)
  • Draft : Slot disponible et temporairement réservé (5 minutes pour confirmer)
  • Connected : Session active (20 minutes)
  • Disconnected : Déconnecté du système

Transitions d'états

  1. Waiting → Draft : Quand un slot devient disponible
  2. Draft → Connected : Après confirmation dans les 5 minutes
  3. Draft → Waiting : Si pas de confirmation dans les 5 minutes (retour en file)
  4. Connected → Disconnected : Après 20 minutes ou déconnexion manuelle

Notifications Redis

Canal Description Exemple de message
queue_status:{user_id} En attente {"status": "waiting", "position": 5}
queue_status:{user_id} Slot disponible {"status": "draft", "duration": 300}
queue_status:{user_id} Connexion confirmée {"status": "connected", "session_duration": 1200}
queue_status:{user_id} Session expirée {"status": "disconnected", "reason": "session_timeout"}
queue_status:{user_id} Draft expiré {"status": "waiting", "reason": "draft_timeout", "position": 5}

Exemples de scénarios de notification

  1. Utilisateur rejoint la file
{
    "user_id": "user123",
    "status": "waiting",
    "position": 5,
    "estimated_wait": 600
}
  1. Slot devient disponible
{
    "user_id": "user123",
    "status": "slot_available",
    "duration": 300,
    "expires_at": "2024-01-20T15:30:00Z"
}
  1. Connexion confirmée
{
    "user_id": "user123",
    "status": "connected",
    "session_duration": 1200,
    "expires_at": "2024-01-20T16:00:00Z"
}
  1. Notification d'expiration imminente
{
    "user_id": "user123",
    "status": "expiring_soon",
    "remaining_time": 60,
    "session_type": "active"
}
  1. Notification de déconnexion
{
    "user_id": "user123",
    "status": "disconnected",
    "reason": "session_timeout",
    "requeue_position": 3
}

Notions

On dit les termes :

  • Slot -> Place disponible pour un utilisateur actif dans le système
  • Draft -> Période de réservation temporaire (5 minutes) pendant laquelle un utilisateur peut confirmer sa connexion
  • Session -> Durée de connexion active (20 minutes) pendant laquelle un utilisateur peut utiliser le système
  • File d'attente -> Liste ordonnée des utilisateurs en attente d'un slot
  • Pub/Sub -> Système de publication/souscription de Redis permettant la communication en temps réel, c'est mieux que le websocket quand la communication est unidirectionnel (notification)

Installation avec Make

Le projet utilise un Makefile pour automatiser l'installation et la configuration de l'environnement de développement.

Commandes Make disponibles

Commande Description
make setup Installation complète (pyenv, Python 3.12, Poetry, dépendances)
make install-pyenv Installation de pyenv
make install-python Installation de Python 3.12.1 via pyenv
make install-poetry Installation de Poetry
make install-deps Installation des dépendances du projet
make dev Démarrage du serveur de développement
make test Exécution des tests
make docker-up Démarrage des services Docker
make docker-down Arrêt des services Docker
make clean Nettoyage des fichiers temporaires et caches

Installation initiale

  1. Installation complète automatique :
make setup
source ~/.bashrc  
  1. Installation étape par étape :
# Installation de pyenv
make install-pyenv
source ~/.bashrc 

# Installation de Python 3.12
make install-python

# Installation de Poetry
make install-poetry

# Installation des dépendances
make install-deps

Développement

# Démarrer le serveur de développement
make dev

# Lancer les tests
make test

# Démarrer les services Docker
make docker-up

# Arrêter les services Docker
make docker-down

Nettoyage

# Nettoyer les fichiers temporaires et caches
make clean

Pour voir toutes les commandes disponibles :

make help