Je dois appeler les deux tâches de apply_async suivantes:céleri django appelle seulement 1 des 2 apply_async tâche
escalate.apply_async((e.id), countdown=3)
escalate.apply_async((e.id), countdown=3)
Ma mise en œuvre des tâches ressemble à:
@app.task
def escalate(id, group):
escalation_email, created = EscalationEmail.objects.get_or_create()
escalation_email.send()
return 'sup email sent'
Je dirige le travail avec la commande suivante :
celery -A proj worker -l info --concurrency=10
Le problème est que lorsque je regarde le travailleur, seulement 1 tâches est reçu, puis seulement 1 su dépasse. En outre, seulement 1 email envoie.
Il semble que la deuxième tâche d'escalade s'exécute la plupart du temps.
Comment puis-je m'assurer que ces tâches fonctionnent toutes les deux avec fiabilité dans 100% des cas?
Comment utilisez-vous celery? Essayez d'ajouter --concurrency = 2 –
@SebastianSmolorz J'appelle le worker avec: célery -A proj worker -l info --concurrency = 10, mais il exécute seulement l'une des tâches. Quand je lance deux travailleurs différents, alors il gère les deux tâches. Le problème reste, que se passe-t-il si 3 tâches sont appelées, le 3ème ne s'exécuterait pas s'il n'y a pas 2 travailleurs? – Atma
Le problème se produit-il uniquement lorsque vous essayez d'envoyer 2 de la même tâche? Essayez d'écrire une autre tâche factice et appelez-la de la même manière. BTW vous pouvez simplement utiliser 'task.delay()' plutôt que 'task.apply_async()' –