my_task()和my_task.delay()都可以从django shell运行,但不能在计划时使用

时间:2016-02-09 09:24:50

标签: python django celery

我有一个芹菜任务,从django shell调用时效果很好: -

>>> import my.tasks
>>> my.tasks.send
<@task: my.tasks.send>
>>> my.tasks.send()
>>> my.tasks.send.delay()
<AsyncResult: b692638a-55d6-4b70-aca8-e4e9f4f089cc>

然而,当使用djcelery_crontabschedule和djcelery_periodictask安排它时,它将无法工作,芹菜控制台日志将不会显示任何相关内容: -

[localhost] local: python manage.py celeryd --verbosity=2 -s celery -E --scheduler=djcelery.schedulers.DatabaseScheduler --loglevel=DEBUG -P eventlet -c 1000
 -------------- celery@localhost.localdomain v3.0.17 (Chiastic Slide)
---- **** ----- 
--- * ***  * -- [Configuration]
-- * - **** --- . broker:      redis://localhost:6379/0
- ** ---------- . app:         default:0x14fe9d0 (djcelery.loaders.DjangoLoader)
- ** ---------- . concurrency: 1000 (eventlet)
- ** ---------- . events:      ON
- ** ---------- 
- *** --- * --- [Queues]
-- ******* ---- . celery:      exchange:celery(direct) binding:celery
--- ***** ----- 

[Tasks]
  . celery.backend_cleanup
  . celery.chain
  . celery.chord
  . celery.chord_unlock
  . celery.chunks
  . celery.group
  . celery.map
  . celery.starmap
  . my.tasks.send
  ...
[2016-02-09 14:55:17,519: DEBUG/MainProcess] [Worker] Loading modules.
[2016-02-09 14:55:17,521: DEBUG/MainProcess] [Worker] Claiming components.
[2016-02-09 14:55:17,521: DEBUG/MainProcess] [Worker] Building boot step graph.
[2016-02-09 14:55:17,522: DEBUG/MainProcess] [Worker] New boot order: {ev, queues, beat, pool, mediator, autoreloader, timers, state-db, autoscaler, consumer}
[2016-02-09 14:55:17,524: DEBUG/MainProcess] Starting celery.concurrency.eventlet.TaskPool...
[2016-02-09 14:55:17,524: DEBUG/MainProcess] celery.concurrency.eventlet.TaskPool OK!
[2016-02-09 14:55:17,524: DEBUG/MainProcess] Starting celery.worker.consumer.BlockingConsumer...
[2016-02-09 14:55:17,525: WARNING/MainProcess] celery@localhost.localdomain ready.
[2016-02-09 14:55:17,525: DEBUG/MainProcess] consumer: Re-establishing connection to the broker...
[2016-02-09 14:55:17,530: INFO/MainProcess] consumer: Connected to redis://localhost:6379/0.
[2016-02-09 14:55:17,531: DEBUG/MainProcess] consumer: basic.qos: prefetch_count->2000
[2016-02-09 14:55:17,534: DEBUG/MainProcess] consumer: Ready to accept tasks!
[2016-02-09 14:55:17,537: INFO/MainProcess] pidbox: Connected to redis://localhost:6379/0.

我可以查看其他日志吗?

1 个答案:

答案 0 :(得分:2)

默认情况下,Celery工作进程不会处理periodic tasks(如cronjobs)。要使您的工作进程处理预定作业,请在启动命令行中添加-B选项:

celery -A yourproj -B worker