Celery:任务在前几次之后没有从队列中执行



[前提条件]

Django==1.5.8
  • 芹菜==3.0.23
  • django芹菜==3.0.23
  • amqp==1.4.6
  • [步骤]

    • 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解决了这个问题。

    然而,我仍然不知道失败的原因。

    相关内容

    • 没有找到相关文章

    最新更新