Как периодически запускать задание в сельдерее? - PullRequest
1 голос
/ 26 апреля 2020

Я хочу запускать задачу каждые 10 секунд с помощью сельдерея c задача. Это мой код в celery.py:

    from __future__ import absolute_import, unicode_literals
    import os
    from celery import Celery 

     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoCelery1.settings')
     app = Celery('DjangoCelery1')
     app.config_from_object('django.conf:settings', namespace='CELERY')
     app.autodiscover_tasks()   

     @app.on_after_finalize.connect
     def setup_periodic_tasks(sender, **kwargs):
             sender.add_periodic_task(10, test.s('hello'), name='add every 10')

    @app.task
    def test(arg):
        print(arg)
        with open("test.txt", "w") as myfile:
             myfile.write(arg)

Затем я запускаю его с помощью следующей команды:

celery -A DjangoCelery1 beat -l info

Вроде запускается и в терминале выдает следующее сообщение :

celery beat v4.4.2 (cliffs) is starting.
__    -    ... __   -        _
LocalTime -> 2020-04-26 15:56:48
Configuration ->
    . broker -> amqp://guest:**@localhost:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@%INFO
    . maxinterval -> 5.00 minutes (300s)
[2020-04-26 15:56:48,483: INFO/MainProcess] beat: Starting...
[2020-04-26 15:56:48,499: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:56:53,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:56:58,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:57:03,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:57:08,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:57:13,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)

Но задача не выполняется, и нет печатного сообщения и созданного текстового файла. в чем проблема?

1 Ответ

1 голос
/ 26 апреля 2020

Это процесс ритма - теперь вам нужно запустить другой процесс:

celery -A tasks worker ...

, чтобы работник мог использовать задачи, которые вы запускаете с помощью ритмов, и обрабатывать их.

...