J'essaie de comprendre comment fonctionne le céleri
Dans mon Django dans tasks.py
fichier J'ai créé une tâche:
@celery.shared_task(default_retry_delay=2 * 60, max_retries=2)
def my_task(param1, param2):
# There are some operations
J'appelle cette tâche en utilisant ce code:
my_task.delay(param1, param2)
À l'intérieur de ce my_task
il y a une condition dans laquelle cette tâche doit être recommencée mais après un délai d'une minute
J'ai trouvé qu'il existe une sorte de ETA et compte à rebours pour les tâches, mais leurs exemples ne sont qu'avec apply_async
Est-il possible d'utiliser un compte à rebours pour delay
?
De partie de base de la documentation d'appel de céleri
delay(*args, **kwargs)
Raccourci pour envoyer un message de tâche, mais ne prend pas en charge les options d'exécution .
Le délai est donc clairement pratique, mais si vous souhaitez définir des options d'exécution supplémentaires, vous devez utiliser apply_async .
Comme la documentation l'indique, delay
ne peut pas être utilisé avec des options supplémentaires définies, vous devez donc simplement convertir votre appel en apply_async
Si vous souhaitez ajouter des options d'exécution, les documents vous suggèrent d'utiliser une signature. par exemple:
my_task.s(arg1, arg2).apply_async(countdown=60)