芹菜:启动工人后启动PeriodicTask

时间:2014-04-02 10:24:19

标签: python scheduled-tasks celery worker periodic-task

我正在与Celery http://celery.readthedocs.org/en/latest/index.html

合作

我需要在特定时刻执行定期任务。但我只想在启动芹菜工人后开始我的任务。

为此,我正在尝试创建自己的“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 个答案:

答案 0 :(得分:1)

要运行定期任务,您需要开始芹菜节拍。您可以通过在启动worker时传递-B参数来执行此操作:

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