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.
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
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.
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