Я пытаюсь использовать Celery и его функцию Celery beat для планирования задач. Я пытаюсь создать «привет мир» с ритмом сельдерея с помощью on_after_configure / finalize, но он не показывает никакого журнала.
Я попытался установить часовые пояса в формате UTC для проекта и сельдерея. Я попытался использовать декоратор @shared_task и другие настройки. Тем не менее мне удалось запланировать задачу с помощью декоратора @periodic_task. Не могли бы вы помочь мне с этой проблемой обработчика / сигнала? Спасибо
settings.py
TIME_ZONE = 'UTC'
USE_TZ = True
...
CELERY_RESULT_BACKEND = 'django-db'
CELERY_CACHE_BACKEND = 'django-cache'
CELERY_TIMEZONE = 'UTC'
CELERY_ENABLE_UTC = True
celery.py (НЕ РАБОТАЕТ - НЕ ПОКАЗЫВАЕТ ЗАДАНИЕ В ЖУРНАЛЕ)
from __future__ import absolute_import, unicode_literals
from celery import Celery
from celery.task import periodic_task
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','monkyroproject.settings')
celeryapp2 = Celery('monkyroproject',
broker='amqp://',
backend='amqp://',
include=['monkyroproject.tasks'])
celeryapp2.conf.update(
result_expires=3600,
)
if __name__ == '__main__':
celeryapp2.start()
@celeryapp2.task
def test1():
print("Hello World")
return('Test1 well executed')
@celeryapp2.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(10.0,test1.s(),name = 'iterate every 10 sec')
celery.py (РАБОТАЕТ)
from __future__ import absolute_import, unicode_literals
from celery import Celery
from celery.schedules import crontab
from celery.task import periodic_task
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','monkyroproject.settings')
celeryapp2 = Celery('monkyroproject',
broker='amqp://',
backend='amqp://',
include=['monkyroproject.tasks'])
celeryapp2.conf.update(
result_expires=3600,
)
if __name__ == '__main__':
celeryapp2.start()
@periodic_task(run_every=crontab(minute='*'),name='test_beat',ignore_result=False)
def test_beat():
print('Hello World')
return 'Test Beat well done'
Я ожидаю, что расписание изменится и покажет отправляемую задачу.
[2019-11-03 03:19:58,753: INFO/MainProcess] beat: Starting...
[2019-11-03 03:19:58,762: INFO/MainProcess] Writing entries...
[2019-11-03 03:20:00,328: INFO/MainProcess] DatabaseScheduler: Schedule changed.
[2019-11-03 03:20:00,330: INFO/MainProcess] Writing entries...
[2019-11-03 03:20:05,430: INFO/MainProcess] Writing entries...
[2019-11-03 03:21:00,029: INFO/MainProcess] Scheduler: Sending due task test_beat (test_beat)
[2019-11-03 03:21:00,042: WARNING/MainProcess] c:\users\idriss\django_projects\monkyroproject\virtual002\lib\site-packages\celery\backends\amqp.py:67: CPendingDeprecationWarning:
The AMQP result backend is scheduled for deprecation in version 4.0 and removal in version v5.0. Please use RPC backend or a persistent backend.
alternative='Please use RPC backend or a persistent backend.')
[2019-11-03 03:22:00,005: INFO/MainProcess] Scheduler: Sending due task test_beat (test_beat)
[2019-11-03 03:23:00,002: INFO/MainProcess] Scheduler: Sending due task test_beat (test_beat)
Это только показывает мне это
LocalTime -> 2019-11-03 03:25:19
Configuration ->
. broker -> amqp://guest:**@localhost:5672//
. loader -> celery.loaders.app.AppLoader
. scheduler -> django_celery_beat.schedulers.DatabaseScheduler
. logfile -> [stderr]@%INFO
. maxinterval -> 5.00 seconds (5s)
[2019-11-03 03:25:19,192: INFO/MainProcess] beat: Starting...
[2019-11-03 03:25:19,193: INFO/MainProcess] Writing entries...
[2019-11-03 03:25:24,747: INFO/MainProcess] Writing entries...