2014-04-02 3 views
0

Я работаю с сельдереем http://celery.readthedocs.org/en/latest/index.htmlсельдерея: начиная PeriodicTask после начала рабочего

мне нужно запустить периодические задачи в конкретный момент времени. Но я только хочу начать свою работу после начала работы с сельдереем.

Для этого я пытаюсь создать свою собственную «PeriodicTask». Но я имею дело с проблемой.

Когда я начинаю работу и выполняю run_tasks.py в другом терминале, кажется, что мои периодические задачи выполняются только один раз.

Как я могу сделать, чтобы моя периодическая задача выполнялась каждые 3 секунды.

Это код.

Начало сельдерея:

celery worker --app=worker_manager.celery --loglevel=info 

файл tasks.py

class MyPeriodicTask(PeriodicTask): 

    name = "periodic-task" 
    run_every = timedelta(seconds=3) 

    def run(self, **kwargs): 

     logger = self.get_logger(**kwargs) 
     logger.info("Running periodic task!") 

файл run_tasks.py

tasks.register(MyPeriodicTask) 

wmi_collector_task = worker_app.tasks[MyPeriodicTask.name] 

Спасибо заранее.

ответ

1

Для выполнения периодических задач вам необходимо запустить битум из сельдерея. Вы можете сделать это, передав аргумент -B при запуске работников:

celery worker -B --app=worker_manager.celery --loglevel=info 
+0

Спасибо. Когда я добавляю параметр -B, я выполняю свою периодическую задачу при запуске рабочего. Как я могу выполнить задачу внутри run_tasks.py –

Смежные вопросы