Как настроить и запустить celerybeat

Я только начинаю работать с сельдереем, пытаясь запустить периодическую задачу.

Настроенный *rabbitmq** добавил celeryconfig.py.

И добавил следующий код в tasks.py:

from celery.decorators import periodic_task
from datetime import timedelta

@periodic_task(run_every=timedelta(seconds=2))
def every
celerybeat 
celerybeat v3.0.3 (Chiastic Slide) is starting.
__    -    ... __   -        _
Configuration ->
    . broker -> amqp://arnold@localhost:5672//
    . loader -> celery.loaders.default.Loader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@INFO
    . maxinterval -> now (0s)
[2012-08-03 14:24:52,202: INFO/MainProcess] Celerybeat: Starting...
seconds(): print("Running periodic task!")

Теперь, когда я запускаю celerybeat, набрав «celerybeat» в своем терминале, он начинает работать со следующим сообщением

celerybeat 
celerybeat v3.0.3 (Chiastic Slide) is starting.
__    -    ... __   -        _
Configuration ->
    . broker -> amqp://arnold@localhost:5672//
    . loader -> celery.loaders.default.Loader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@INFO
    . maxinterval -> now (0s)
[2012-08-03 14:24:52,202: INFO/MainProcess] Celerybeat: Starting...

И в терминале нет вывода метода every_2_seconds. Я предполагаю, что мне нужно указать, какое приложение запускать или какие задачи во время команды celerybeat. Как это сделать?

Как я могу указать задачи и печатать строку каждые 2 секунды в качестве периодических задач?

Спасибо.


person Community    schedule 03.08.2012    source источник


Ответы (1)


Добавьте CELERY_IMPORTS=("tasks",) в свой celeryconfig.py, затем запустите celerybeat.

person mushfiq    schedule 03.08.2012
comment
Также запустите celeryd, который напечатает Running Periodic Task! через каждые две секунды. - person mushfiq; 03.08.2012
comment
Привет, @mushfiq, не могли бы вы помочь, я запускаю celery beat через celery multi с параметрами --beat и --schedule, однако задачи не выполняются. Я пытался украсить задачу с помощью @app.periodic_task с помощью CELERY_IMPORTS=("tasks",), но безуспешно. - person Greg0ry; 21.03.2016
comment
@ Greg0ry, твой брокер в порядке? Какую версию Celery вы используете? - person mushfiq; 23.03.2016
comment
Я нашел это - в конце концов, это была моя ошибка, неправильно объявившая CELERY_IMPORTS (конечно, это должен быть app.conf/CELERY_IMPORTS). Спасибо! - person Greg0ry; 23.03.2016