0

我正在使用芹菜http://celery.readthedocs.org/en/latest/index.html

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

为此,我正在尝试创建自己的“PeriodicTask”。但我正在处理一个问题。

当我启动工作人员并在另一个终端中执行run_tasks.py时,似乎我的周期性任务只执行一次。

我该怎么做才能让我的定期任务每 3 秒运行一次。

这是代码的一部分。

开始芹菜:

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

文件任务.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]

提前致谢。

4

1 回答 1

1

要运行定期任务,您需要启动 celery beat。您可以通过在启动工人时传递 -B 参数来做到这一点:

celery worker -B --app=worker_manager.celery --loglevel=info 
于 2014-04-02T10:52:21.510 回答