据我所知,由于Celery 3.1装饰器 @periodic_task 被废弃.
As I know, since Celery 3.1 decorator @periodic_task is depricated.
因此,我尝试从celery docs 运行一个示例并无法意识到我在做什么错.
So I am trying to run an example from celery docs, and can't realise, what am I doing wrong.
我在 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]计划程序:每5秒钟发送一次适当的任务计划程序(some_task).
And when I run: celery -A task_planner worker -l info -B, I recieve only the following: [2016-11-27 19:06:56,119: INFO/Beat] Scheduler: Sending due task planner (some_task) every 5 sec.
但是我期望输出为'Hooray'.
But I am expecting the output 'Hooray'.
那么,我想念什么?
推荐答案已找到解决方案.我有任务:
Have found the solution. I had the task:
@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 :
So I just changed the name of the task from some_task to task_planner.some_task here:
celery.conf.beat_schedule = { 'planner': { 'task': 'task_planner.some_task', 'schedule': 5.0, }, }它奏效了!
[2016-11-29 10:09:57,697: WARNING/PoolWorker-3] Hooray注意.您应运行带有worker的beat(如果任务与beat在同一模块中)和日志级别"info"以查看结果:
Note. You should run beat with worker (if task in the same module as beat) and loglevel 'info' in order to see the results:
celery -A task_planner worker -B -l info更多推荐
Celery 4.0中的定期任务
发布评论