Je suis en train de créer une passerelle entre les messages rabbitmq et l'application Django pour stocker l'état des tâches d'arrière-plan dans la base de données, afin de pouvoir publier de nouvelles tâches via Django interface d'administration. Je suppose que ce n'est rien d'extraordinaire, juste un modèle standard de producteur-consommateur.Stockage de l'état d'une tâche entre plusieurs processus django
- application Web publie à la file d'attente de messages et insère l'état initial de la tâche dans la base de données
- consommation, qui est un processus de python séparé, gère le message et met à jour l'état de la tâche en fonction de la sortie de la tâche
Le problème est que certaines tâches manquent dans la base de données et ne sont donc jamais exécutées. Je suppose que c'est parce que le client reçoit le message plus tôt que la validation db est effectuée. Donc, fondamentalement, revenir de Model.save() ne signifie pas que la transaction est terminée et que toute la communication est rompue.
Y at-il un moyen de résoudre ce problème? Peut-être une sorte de signal post_transaction que je pourrais utiliser?
Merci d'avance.
Qu'est-ce que c'est exactement "Model.save()"? –
@Aaron Digulla: TaskState.save() – user366148