Как динамически добавлять/удалять периодические задачи в Celery (celerybeat)

Если у меня есть функция, определенная следующим образом:

def add(x,y):
  return x+y

Есть ли способ динамически добавить эту функцию как celery PeriodicTask и запустить ее во время выполнения? Я хотел бы иметь возможность делать что-то вроде (псевдокода ):

some_unique_task_id = celery.beat.schedule_task(add, run_every=crontab(minute="*/30"))
celery.beat.start(some_unique_task_id)

. Я также хотел бы динамически останавливать или удалять эту задачу с помощью чего-то вроде (псевдокода):

celery.beat.remove_task(some_unique_task_id)

или

celery.beat.stop(some_unique_task_id)

. К вашему сведению, я не использую djcelery, который позволяет вам управлять периодическими задачами через администратора django.

43
задан Jamie Forrest 17 April 2012 в 16:13
поделиться