[前提条件]
Django==1.5.8[步骤]
- djangoviews.py通过RabbitMQ向芹菜任务队列发送消息
- Celery从队列中读取消息并按顺序执行任务
- 每项任务都不会花很长时间
[问题]
- 在最初的几次中,芹菜成功地执行了任务,但队列中的任务数量并没有减少(任务总是堆积在队列中)
- 最后,在最初的几次之后,芹菜并没有执行队列中的任务
[提示]
- 我认为以下可能是解决问题的提示
- 前几次,任务执行得很好,但没有从队列中删除
Task utils.tasks.do_things_1[027918df-a6ef-4712-a8c8-5b380d5bd0f6] succeeded in 1415464878.25s: None
=>为什么要花这么长时间
[日志详细描述]
- 检查任务数量和工作人员
$sudo rabbitmqctl list_queues name messages consumers|grep celener
芹菜0(0个任务,0个工人)
- 调试模式启动时的芹菜信息
$/manage.py芹菜工人--loglevel=调试
celery@75e28d96-1a33-4e08-8283-a31813a4124dv3.0.23(Chiastic Slide)
Linux-3.2.0-34-通用-pae-i686-带-Ubuntu-14.04-生锈
[config]
经纪人:amqp://guest@localhost:5672//
app:默认值:0xb6b2188c(djcele.loader.DjanoLoader)
并发:1(进程)
事件:关闭(启用-E以监视此工作程序)
[队列]
芹菜:交换:芹菜(直接)结合:芹菜
[Tasks]
utils.tasks.do_things_1
utils.tasks.do_things_2
utils.tasks.do_things_3
[2014-11-16 14:09:13769:DEBUG/MainProcess][Worker]加载模块。
〔2014-11-16 14:09:13771:DEBUG/MainProcess〕〔Worker〕声明组件。
〔2014-11-16 14:09:13771:DEBUG/MainProcess〕〔Worker〕构建引导步骤图。
〔2014-11-16 14:09:13772:调试/MainProcess〕〔Worker〕新启动顺序:{ev,queues,beat,pool,中介器、自动阅读器、计时器、状态数据库、自动缩放器、消费者}
〔2014-11-16 14:09:13774:DEBUG/MainProcess〕启动芹菜.工人.集线器.集线器…
〔2014-11-16 14:09:13774:DEBUG/MainProcess〕celery.worker.hub.hub OK!
〔2014-11-16 14:09:13774:DEBUG/MainProcess〕正在启动芹菜并发进程任务池…
〔2014-11-16 14:09:13782:调试/主进程〕celery.cocurrency.produces.TaskPool OK!
〔2014-11-16 14:09:13787:DEBUG/MainProcess〕启动芹菜.工人.调解员.调解员…
〔2014-11-16 14:09:13788:调试/主进程〕celery.worker.mediator.mediator OK!
〔2014-11-16 14:09:13788:调试/MainProcess〕启动芹菜.工人.消费者.消费者…
〔2014-11-16 14:09:13789:警告/主进程〕celery@75e28d96-1a33-4e08-8283-a31813a4124d准备好的
〔2014-11-16 14:09:13789:DEBUG/MainProcess〕消费者:重新建立与经纪商的连接。。。
〔2014-11-16 14:09:13800:DEBUG/MainProcess〕从服务器启动,版本:0.9,属性:{u'formation':u'Licensed下的MPL。请参阅http://www.rabbitmq.com/',u'product':u'RabbitMQ',u'版权所有':u'版权(C)2007-2013 GoPivotal,股份有限公司',u'能力':{u'exchange_exchange_bindings':True,u'connection.blocked':True;u'authentication_failure_close':True、u'basic.nack':True}中,机制:[u'PLAIN',u'AMQPLAIN'],区域设置:[u'en_US']
〔2014-11-16 14:09:13801:DEBUG/MainProcess〕打开OK!
〔2014-11-16 14:09:13801:INFO/MainProcess〕消费者:已连接amqp://guest@127.0.0.1:5672//.
〔2014-11-16 14:09:13802:DEBUG/MainProcess〕使用channel_id:1
〔2014-11-16 14:09:13803:调试/主进程〕通道打开
〔2014-11-16 14:09:13804:DEBUG/MainProcess〕使用者:basic.qos:预取计数->4
〔2014-11-16 14:09:13805:调试/MainProcess〕使用channel_id:2
〔2014-11-16 14:09:13805:调试/主进程〕通道打开
〔2014-11-16 14:09:13812:DEBUG/MainProcess〕消费者:准备好接受任务了!
- 检查任务和工作者的数量
$sudo rabbitmqctl list_queues name messages consumers|grep celener
芹菜0 1(0个任务,1个工人)
- views.py中发生了一些事件,并发送消息执行do_things_1、do_things_2、do_tings_3(第一次尝试)
[2014-11-16 14:53:51874:INFO/MainProcess]从代理获取任务:utils.tasks。do_things_1[027118df-a6ef-4712-a8c8-5b380d5bd0f6]eta:[2014-116 14:53:52.835084+09:00] 〔2014-11-16 14:53:51875:INFO/MainProcess〕从broker获取任务:utils.tasks。do_things_2〔a1c09645-32fb-4399-802b-60ca826fa6bc〕eta:〔2014-11-116 14:53:52.851516+09:00〕
〔2014-11-16 14:53:51880:INFO/MainProcess〕从broker获取任务:utils.tasks。do_things_3〔5a66f885-baf2-49ab-b82f-733d2b68fe7b〕eta:〔2014-11-116 14:53:52.852527+09:00〕
〔2014-11-16 14:53:51880:DEBUG/MainProcess〕使用者:basic.qos:预取计数->7
〔2014-11-16 14:53:52882:DEBUG/MainProcess〕使用者:basic.qos:预取计数->4
〔2014-11-16 14:53:52917:DEBUG/MainProcess〕中介:正在为任务运行回调:utils.tasks.do_things_1〔027918df-a6ef-4712-a8c8-5b380d5bd0f6〕
〔2014-11-16 14:53:52918:DEBUG/MainProcess〕任务池:应用(args:('utils.tasks.do_things_1','027918df-a6ef-4712-a8c8-5b380d5bd0f6',[u'0301010101',u'1'],{},{'utc':True,'is_eager':False,'chord':None,'group':无,'args':[u'0301 010101'、u'1'],'retries':0,'delivery_info':{'priority':无'routing_key':u'selery','exchange':u'selery'},"expires":无,"task":"utils.tasks.do_things_1","callbacks":没有,"errbacks","hostname":"************************","taskset":无
〔2014-11-16 14:53:52918:DEBUG/MainProcess〕中介:正在为任务运行回调:utils.tasks.do_things_2[a1c09645-32fb-4399-802b-60ca826fa6bc]
〔2014-11-16 14:53:52918:DEBUG/MainProcess〕任务池:应用(args:('utils.tasks.do_things_2','a1c09645-32fb-4399-802b-60ca826fa6bc',[u'0301010101',u'1'],{},{'utc':True,'is_eager':False,'chord':None,'group':无,'args':[u'0030101001','1'],'retries':0,'delivery_info':{'priority':无ing_key':u'selery','exchange':u'selery'},"expires":无,"task":"utils.tasks.do_things_2","callbacks":None,"errbacks":无,"hostname":"*********************","taskset":无
〔2014-11-16 14:53:52918:DEBUG/MainProcess〕中介:正在为任务运行回调:utils.tasks.do_things_3[5a66f885-baf2-49ab-b82f-733d2b68fe7b]
〔2014-11-16 14:53:52918:DEBUG/MainProcess〕任务池:应用(args:('utils.tasks.do_things_3','5a66f885-baf2-49ab-b82f-733d2b68fe7b',[u'0301010101',u'1',u'1'],{},{'utc':True,'is_eager':False,'chord':无,'group':无,'args':[u'01301010101'info':{"优先级":无,routing_key':u'selery',exchange':u'selery'},"expires":无,"task":"utils.tasks.do_things_3","callbacks":没有,"errbacks":无,"hostname":"*************************","taskset":无、"kwargs":{},"eta":'2014-11-16T05:53:52.852527',"id":'5a66f885-baf2-49ab-b82f-733d2b68fe7b'})kwargs:{})
我已经从浏览器检查了do_things_1、do_thins_2、do_things_3是否执行良好
检查任务和工作人员的数量(如您所见,任务不会从队列中减少)
$sudo rabbitmqctl list_queues name messages consumers|grep celener
芹菜3 1(3项任务,1名工人)
- 重复以执行do_things_1、do_things_2、do_things_3(第二次尝试)
[2014-16-16 15:27:54060:DEBUG/MainProcess]接受的任务:utils.tasks.do_things_1[027918df-a6ef-4712-a8c8-5b380d5bd0f6]pid:23793 〔2014-11-16 15:27:54060:INFO/MainProcess〕从broker获取任务:utils.tasks。do_things_1[2ea06e92-c617-460e-9275-98d4c4f79394〕eta:〔2014-11-116 15:27:55.048622+09:00〕
〔2014-11-16 15:27:54060:DEBUG/MainProcess〕使用者:basic.qos:预取计数->5
〔2014-11-16 15:27:54063:信息/主进程〕任务实用程序.tasks.do_things_1〔027918df-a6ef-4712-a8c8-5b380d5bd0f6〕在1415464878.25s中成功:无
〔2014-11-16 15:27:54063:INFO/MainProcess〕从broker获取任务:utils.tasks。do_things_2〔cad7b687-7ef6-4f99-a06e-4a38369837d〕eta:〔2014-11-116 15:27:55.061913+09:00〕
〔2014-11-16 15:27:54063:DEBUG/MainProcess〕使用者:basic.qos:预取计数->6
〔2014-11-16 15:27:54065:调试/主进程〕接受的任务:utils.tasks.do_things_2[a1c09645-32fb-4399-802b-60ca826fa6bc]pid:23793
〔2014-11-16 15:27:54066:INFO/MainProcess〕从broker获取任务:utils.tasks。do_things_3〔ceee2b27-5cc0-45cc-9a00-e15a361fa92f〕eta:〔2014-11-116 15:27:55.064312+09:00〕
〔2014-11-16 15:27:54066:DEBUG/MainProcess〕使用者:basic.qos:预取计数->7
〔2014-11-16 15:27:55068:DEBUG/MainProcess〕使用者:basic.qos:预取计数->4
〔2014-11-16 15:27:55101:DEBUG/MainProcess〕中介:正在为任务运行回调:utils.tasks.do_things_1[2ea06e92-c617-460e-9275-98d4c4f79394]
〔2014-11-16 15:27:55101:DEBUG/MainProcess〕任务池:应用(args:('utils.tasks.do_things_1','2ea06e92-c617-460e-9275-98d4c4f79394',[u'0301010101',u'1'),{},{'utc':True,'is_eager':False,'chord':None,'group':无,'args':[u'0030101001','1'],'retries':0,'delivery_info':{'priority':无routing_key':u'selery','exchange':u'selery'},"expires":无,"task":"utils.tasks.do_things_1","callbacks":没有,"erracks":没,"hostname":"******************************","taskset":无、"kwargs":{},"eta":'2014-11-16T06:7:55.048622',"id":'2ea06e92-c617-460e-9275-98d4c4f79394'})kwargs:{})
〔2014-11-16 15:27:55105:DEBUG/MainProcess〕中介:正在为任务运行回调:utils.tasks.do_things_2[cad7b687-7ef6-4f99-a06e-4a38369837d]
〔2014-11-16 15:27:55105:DEBUG/MainProcess〕任务池:应用(args:('utils.tasks.do_things_2','cad7b687-7ef6-4f99-a06e-4a38369837d',[u'0301010101',u'1'],{},{'utc':True,'is_eager':False,'chord':None,'group':None,'args':[u'0030010101'、u'1'〕,'retries':0,'delivery_info':{'priority':None.'routing_key':u'selery','exchange':u'selery'},"expires":无,"task":"utils.tasks.do_things_2","callbacks":没有,"errbacks","hostname":"*************************","taskset":无
〔2014-11-16 15:27:55105:DEBUG/MainProcess〕中介:正在为任务运行回调:utils.tasks.do_things_3[cee2b27-5cc0-45cc-9ao0-e15a361fa92f]
〔2014-11-16 15:27:55106:DEBUG/MainProcess〕任务池:应用(args:('utils.tasks.do_things_3','ceee2b27-5cc0-45cc-9a00-e15a361fa92f',[u'0301010101',u'1',u'1'],{},{'utc':True,'is_eager':False,'chord':无,'group':无,'args':[u'0030101001',u1',u1'],'retries':0,'delivery_info':{"优先级":无,"routing_key":u'selery',"exchange":u'selery'},"expires":无,"task":"utils.tasks.do_things_3","callbacks":没有,"erracks":没,"hostname":"***********************","taskset":无、"kwargs":{}、"eta":‘2014-11-16T06:27:55.064312’,"id":"ceee2b27-5cc0-45cc-9a00-e15a361fa92f"})kwargs:{})
我已经从浏览器检查了do_things_1、do_thins_2、do_things_3是否执行良好
检查任务和工作人员的数量(如您所见,任务部分减少)
$sudo rabbitmqctl list_queues name messages consumers|grep celener
芹菜4 1(4项任务,1名工人)
重复以执行do_things_1、do_things_2、do_things_3(第三次尝试)
Celery没有记录任何内容,do_things_1、do_thins_2、do_things_3没有执行
检查任务和工作人员的数量(如您所见,任务增加)
$sudo rabbitmqctl list_queues name messages consumers|grep celener
芹菜7 1(7项任务,1名工人)
- 当我通过"Ctrl+C">终止它时,它的日志如下
celeryd:热关机(主进程)
〔2014-11-16 16:15:52922:调试/主进程〕停止芹菜.工人.消费者.消费者…
〔2014-11-16 16:15:52923:DEBUG/MainProcess〕消费者:停止消费者。。。
〔2014-11-16 16:15:52923:DEBUG/MainProcess〕停止芹菜.工人.调解员.调解员…
〔2014-11-16 16:15:53638:DEBUG/MainProcess〕正在停止celenic.concurrency.products.TaskPool…
〔2014-11-16 16:15:53638:INFO/MainProcess〕任务实用程序.任务.do_things_2〔a1c09645-32fb-4399-802b-60ca826fa6bc〕成功1415467757.76s:无
〔2014-11-16 16:15:53639:调试/主进程〕接受的任务:utils.tasks.do_things_3[5a66f885-baf2-49ab-b82f-733d2b68fe7b]pid:23793
〔2014-11-16 16:15:53639:信息/主进程〕任务实用程序.tasks.do_things_3〔5a66f885-baf2-49ab-b82f-733d2b68fe7b〕成功1415467757.75s:无
〔2014-11-16 16:15:53640:调试/主进程〕接受的任务:utils.tasks.do_things_1[2ea06e92-c617-460e-9275-98d4c4f79394]pid:23793
〔2014-11-16 16:15:53640:INFO/MainProcess〕任务实用程序.tasks.do_things_1〔2ea06e92-c617-460e-9275-98d4c4f79394〕成功1415465715.65s:无
〔2014-11-16 16:15:53640:调试/主进程〕接受的任务:utils.tasks.do_things_2〔cad7b687-7ef6-4f99-a06e-4a0038369837d〕pid:23793
〔2014-11-16 16:15:53641:信息/主进程〕任务实用程序.tasks.do_things_2〔cad7b687-7ef6-4f99-a06e-4a38369837d〕成功1415465715.64s:无
〔2014-11-16 16:15:53641:调试/主进程〕接受的任务:utils.tasks.do_things_3〔ceee2b27-5cc0-45cc-9a00-e15a361fa92f〕pid:23793
〔2014-11-16 16:15:53642:INFO/MainProcess〕任务实用程序.tasks.update_apartboard_1st_load_page_cache〔ceee2b27-5cc0-45cc-9a00-e15a361fa92f〕成功1415465715.63s:无
do_things_1、do_things_2、do_things_3未执行(从浏览器检查)
检查任务和工作人员的数量(如您所见,任务从队列中减少)
$sudo rabbitmqctl list_queues name messages consumers|grep celener
芹菜3 0(3项任务,0名工人)
- 清除任务队列
$/manage.py celeryctl清除
$sudo rabbitmqctl list_queues name messages consumers|grep芹菜
芹菜0(0个任务,0个工人)
将Celery版本从3.0.23
升级到3.0.25
解决了这个问题。
然而,我仍然不知道失败的原因。