在芹菜4.0的周期性任务
问题描述:
据我所知,因为芹菜3.1装饰者@periodic_task
是depricated。在芹菜4.0的周期性任务
所以我想从芹菜docs运行一个例子,并没有意识到,我做错了什么。
我有下面的代码在task_planner.py
:
from celery import Celery
from kombu import Queue, Exchange
class Config(object):
CELERY_QUEUES = (
Queue(
'try',
exchange=Exchange('try'),
routing_key='try',
),
)
celery = Celery('tasks',
backend='redis://',
broker='redis://localhost:6379/0')
celery.config_from_object(Config)
celery.conf.beat_schedule = {
'planner': {
'task': 'some_task',
'schedule': 5.0,
},
}
@celery.task(queue='try')
def some_task():
print('Hooray')
当我运行:celery -A task_planner worker -l info -B
,我收到只有以下:[2016-11-27 19:06:56,119: INFO/Beat] Scheduler: Sending due task planner (some_task)
每5秒。
但我期待输出'Hooray'。
那么,我错过了什么?
答
已找到解决方案。 我有任务:
@celery.task(queue='try')
def some_task():
print('Hooray')
我打印它的名字:
print(some_task)
得到如下:
<@task: task_planner.some_task of tasks:0x7fceaaf5b9e8>
所以我只是改变了任务的名称从some_task
到task_planner.some_task
这里:
celery.conf.beat_schedule = {
'planner': {
'task': 'task_planner.some_task',
'schedule': 5.0,
},
}
它的工作!
[2016-11-29 10:09:57,697: WARNING/PoolWorker-3] Hooray
注意。您应该与工作人员(如果任务与beat中的任务位于同一模块中)运行拍子以及loglevel'info'以查看结果:
celery -A task_planner worker -B -l info