我有一个芹菜任务,从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.
我可以查看其他日志吗?
答案 0 :(得分:2)
默认情况下,Celery工作进程不会处理periodic tasks(如cronjobs)。要使您的工作进程处理预定作业,请在启动命令行中添加-B
选项:
celery -A yourproj -B worker