web-dev-qa-db-fra.com

Céleri Obtenir la liste des tâches enregistrées

Existe-t-il un moyen d'obtenir une liste des tâches enregistrées?

J'ai essayé:

celery_app.tasks.keys()

Qui ne renvoie que des tâches intégrées de céleri comme celery.chord, celery.chain, etc.

20
Richard Knop
from celery.task.control import  inspect
i = inspect()
i.registered_tasks()

Cela donnera un dictionnaire de tous les travailleurs et des tâches enregistrées connexes.

from itertools import chain
set(chain.from_iterable( i.registered_tasks().values() ))

Dans le cas où vous avez plusieurs travailleurs exécutant les mêmes tâches ou si vous avez juste besoin d'un ensemble de toutes les tâches enregistrées, il fait le travail.

Autre moyen:

Depuis le terminal, vous pouvez obtenir un vidage des tâches enregistrées en utilisant cette commande

celery inspect registered
37
ChillarAnand

Dans un shell, essayez:

from celery import current_app 
print(current_app.tasks.keys())

current_app.tasks a toutes les tâches disponibles sous forme de dictionnaire. Les clés sont tous les noms des tâches enregistrées dans l'application céleri actuelle que vous exécutez.

1
Mike - kentivo

Avec les nouvelles versions de céleri (4.0 et supérieures), ce qui suit semble être la bonne façon:

 from celery import current_app

 _ = current_app.loader.import_default_modules()

 tasks = list(sorted(name for name in current_app.tasks
                            if not name.startswith('celery.')))
 return tasks
0
Naved Khan