web-dev-qa-db-fra.com

Céleri, délai d'appel avec compte à rebours

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?

6
Mr.D

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)
3
iklinac