如何解决django-celery启动后迅速关闭
日志中也没有打印什么明显的错误,只是显示连接了rabbitmq后就关闭了
[2019-09-1106:08:45,729:INFO/Beat]beat:Starting...
[2019-09-1106:08:45,731:INFO/MainProcess]Connectedtoamqp://guest:**@127.0.0.1:5672//
[2019-09-1106:08:45,732:INFO/Beat]Writingentries(0)...
[2019-09-1106:08:45,740:INFO/MainProcess]mingle:searchingforneighbors
[2019-09-1106:08:45,771:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-09-1106:08:45,771:INFO/Beat]Writingentries(0)...
[2019-09-1106:08:46,748:INFO/MainProcess]mingle:allalone
[2019-09-1106:08:46,749:INFO/MainProcess]beat:Shuttingdown...
[2019-09-1106:08:46,749:INFO/Beat]Writingentries(0)...
[2019-09-1106:08:46,749:INFO/Beat]Writingentries(0)...
查看rabbitmq的日志,这里显示rabbitmq连接成功,然后就是断开连接,(但是我还是以为是rabbitmq的问题,因为我在另外一台主机上一摸一样的环境没有问题)
=INFOREPORT====15-Oct-2019::02:17:54===
connection<0.305.0>(127.0.0.1:39786->127.0.0.1:5672):user'guest'authenticatedandgrantedaccesstovhost'/'=INFOREPORT====15-Oct-2019::02:17:56===
connection<0.310.0>(127.0.0.1:39788->127.0.0.1:5672):user'guest'authenticatedandgrantedaccesstovhost'/'=WARNINGREPORT====15-Oct-2019::02:17:57===
closingAMQPconnection<0.305.0>(127.0.0.1:39786->127.0.0.1:5672,vhost:'/',user:'guest'):
clientunexpectedlyclosedTCPconnection=INFOREPORT====15-Oct-2019::02:17:58===
closingAMQPconnection<0.310.0>(127.0.0.1:39788->127.0.0.1:5672,vhost:'/',user:'guest')=INFOREPORT====15-Oct-2019::02:17:58===
closingAMQPconnection<0.302.0>(127.0.0.1:39780->127.0.0.1:5672,vhost:'/',user:'guest')
在试了重装erlang和rabbitmq等服务,折腾了一天后,第二天我换了个思路,从celery源码查看
找到Shuttingdown...这个日志输出的位置
defstop(self,wait=False): info('beat:Shuttingdown...') #这里增加一段代码 '''''' importtraceback info("startshutdowntraceback====") traceback.print_stack() '''''' self._is_shutdown.set() waitandself._is_stopped.wait()#blockuntilshutdowndone.
再次启动celery后获得以下日志
[2019-10-1610:15:15,037:INFO/Beat]beat:Starting...
[2019-10-1610:15:15,039:INFO/Beat]Writingentries(0)...
[2019-10-1610:15:15,082:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:15:15,082:INFO/Beat]Writingentries(0)...
[2019-10-1610:15:15,394:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:15:15,394:INFO/Beat]Writingentries(0)...
[2019-10-1610:15:16,201:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:15:16,201:INFO/Beat]Writingentries(0)...
[2019-10-1610:15:16,859:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:15:16,859:INFO/Beat]Writingentries(0)...
[2019-10-1610:15:23,337:INFO/MainProcess]Connectedtoamqp://guest:**@127.0.0.1:5672//
[2019-10-1610:15:28,102:INFO/Beat]Writingentries(0)...
[2019-10-1610:15:31,348:INFO/MainProcess]mingle:searchingforneighbors
[2019-10-1610:15:32,357:INFO/MainProcess]mingle:allalone
[2019-10-1610:15:32,362:WARNING/MainProcess]invalidsyntax(strategy.py,line13)
[2019-10-1610:15:33,372:INFO/MainProcess]startshutdowntraceback====
[2019-10-1610:15:33,374:WARNING/MainProcess]File"manage.py",line15,in
execute_from_command_line(sys.argv)
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/django/core/management/__init__.py"
,line381,inexecute_from_command_lineutility.execute()
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/django/core/management/__init__.py"
,line375,inexecuteself.fetch_command(subcommand).run_from_argv(self.argv)
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/djcelery/management/commands/celery
.py",line21,inrun_from_argv['{0[0]}{0[1]}'.format(argv)]+argv[2:],
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/celery.py",line793,in
execute_from_commandlinesuper(CeleryCommand,self).execute_from_commandline(argv)))
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/base.py",line311,ine
xecute_from_commandlinereturnself.handle_argv(self.prog_name,argv[1:])
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/celery.py",line785,in
handle_argvreturnself.execute(command,argv)
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/celery.py",line717,in
execute).run_from_argv(self.prog_name,argv[1:],command=argv[0])
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/worker.py",line179,in
run_from_argvreturnself(*args,**options)
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/base.py",line274,in_
_call__ret=self.run(*args,**kwargs)
[2019-10-1610:15:33,374:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/worker.py",line212,in
runstate_db=self.node_format(state_db,hostname),**kwargs
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/__init__.py",line21
2,instartself.stop()
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/__init__.py",line25
4,instopself._shutdown(warm=True)
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/__init__.py",line26
8,in_shutdownself.blueprint.stop(self,terminate=notwarm)
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bootsteps.py",line179,in
stopdescription=what,propagate=False,
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bootsteps.py",line142,in
restartself.send_all(parent,method,description,propagate=propagate)
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bootsteps.py",line155,in
send_allfun(parent,*args)
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bootsteps.py",line378,in
stopreturnself.obj.stop()
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/beat.py",line559,instop
self.service.stop()
[2019-10-1610:15:33,375:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/beat.py",line499,instop
traceback.print_stack()
[2019-10-1610:15:33,375:INFO/MainProcess]beat:Shuttingdown...
[2019-10-1610:15:33,375:INFO/Beat]Writingentries(0)...
[2019-10-1610:15:33,376:INFO/Beat]Writingentries(0)...
[root@testoperations]#[2019-10-1610:15:51,178:INFO/Beat]Writingentries(0)...
[2019-10-1610:16:30,352:INFO/Beat]Writingentries(0)...
[2019-10-1610:16:46,806:INFO/Beat]Writingentries(0)...
[2019-10-1610:18:56,064:INFO/Beat]Writingentries(0)...
[2019-10-1610:19:35,231:INFO/Beat]Writingentries(0)...
[2019-10-1610:19:51,689:INFO/Beat]Writingentries(0)...
可以看出在/usr/local/python3/lib/python3.7/site-packages/celery/worker/__init__.py中的start方法中执行了stop方法,在stop中打印了beat:Shuttingdown...字符
defstart(self): """Startstheworkersmainloop.""" ''' 修改start方法,去掉try,以便找到错误位置 ''' self.blueprint.start(self) #try: #self.blueprint.start(self) #exceptWorkerTerminate: #self.terminate() #exceptExceptionasexc: #logger.error('Unrecoverableerror:%r',exc,exc_info=True) #self.stop() #except(KeyboardInterrupt,SystemExit): #self.stop()
然后再次启动celery获得以下日志
[2019-10-1610:19:57,241:INFO/Beat]beat:Starting...
[2019-10-1610:19:57,244:INFO/Beat]Writingentries(0)...
[2019-10-1610:19:57,287:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:19:57,287:INFO/Beat]Writingentries(0)...
[2019-10-1610:20:00,218:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:20:00,218:INFO/Beat]Writingentries(0)...
[2019-10-1610:20:01,023:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:20:01,023:INFO/Beat]Writingentries(0)...
[2019-10-1610:20:01,685:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:20:01,685:INFO/Beat]Writingentries(0)...
[2019-10-1610:20:05,548:INFO/MainProcess]Connectedtoamqp://guest:**@127.0.0.1:5672//
[2019-10-1610:20:10,307:INFO/Beat]Writingentries(0)...
[2019-10-1610:20:13,561:INFO/MainProcess]mingle:searchingforneighbors
[2019-10-1610:20:14,570:INFO/MainProcess]mingle:allalone
[2019-10-1610:20:14,571:WARNING/MainProcess]Traceback(mostrecentcalllast):
[2019-10-1610:20:14,571:WARNING/MainProcess]File"manage.py",line15,in
[2019-10-1610:20:14,571:WARNING/MainProcess]execute_from_command_line(sys.argv)
[2019-10-1610:20:14,571:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/django/core/management/__init__.py"
,line381,inexecute_from_command_line[2019-10-1610:20:14,572:WARNING/MainProcess]utility.execute()
[2019-10-1610:20:14,572:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/django/core/management/__init__.py"
,line375,inexecute[2019-10-1610:20:14,572:WARNING/MainProcess]self.fetch_command(subcommand).run_from_argv(self.argv)
[2019-10-1610:20:14,572:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/djcelery/management/commands/celery
.py",line21,inrun_from_argv[2019-10-1610:20:14,572:WARNING/MainProcess]['{0[0]}{0[1]}'.format(argv)]+argv[2:],
[2019-10-1610:20:14,572:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/celery.py",line793,in
execute_from_commandline[2019-10-1610:20:14,573:WARNING/MainProcess]super(CeleryCommand,self).execute_from_commandline(argv)))
[2019-10-1610:20:14,573:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/base.py",line311,ine
xecute_from_commandline[2019-10-1610:20:14,573:WARNING/MainProcess]returnself.handle_argv(self.prog_name,argv[1:])
[2019-10-1610:20:14,573:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/celery.py",line785,in
handle_argv[2019-10-1610:20:14,574:WARNING/MainProcess]returnself.execute(command,argv)
[2019-10-1610:20:14,574:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/celery.py",line717,in
execute[2019-10-1610:20:14,574:WARNING/MainProcess]).run_from_argv(self.prog_name,argv[1:],command=argv[0])
[2019-10-1610:20:14,574:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/worker.py",line179,in
run_from_argv[2019-10-1610:20:14,574:WARNING/MainProcess]returnself(*args,**options)
[2019-10-1610:20:14,575:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/base.py",line274,in_
_call__[2019-10-1610:20:14,575:WARNING/MainProcess]ret=self.run(*args,**kwargs)
[2019-10-1610:20:14,575:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bin/worker.py",line212,in
run[2019-10-1610:20:14,575:WARNING/MainProcess]state_db=self.node_format(state_db,hostname),**kwargs
[2019-10-1610:20:14,575:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/__init__.py",line20
5,instart[2019-10-1610:20:14,575:WARNING/MainProcess]self.blueprint.start(self)
[2019-10-1610:20:14,575:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bootsteps.py",line123,in
start[2019-10-1610:20:14,576:WARNING/MainProcess]step.start(parent)
[2019-10-1610:20:14,576:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bootsteps.py",line374,in
start[2019-10-1610:20:14,576:WARNING/MainProcess]returnself.obj.start()
[2019-10-1610:20:14,576:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/consumer.py",line28
0,instart[2019-10-1610:20:14,576:WARNING/MainProcess]blueprint.start(self)
[2019-10-1610:20:14,577:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/bootsteps.py",line123,in
start[2019-10-1610:20:14,577:WARNING/MainProcess]step.start(parent)
[2019-10-1610:20:14,577:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/consumer.py",line64
2,instart[2019-10-1610:20:14,577:WARNING/MainProcess]c.update_strategies()
[2019-10-1610:20:14,577:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/consumer.py",line43
9,inupdate_strategies[2019-10-1610:20:14,578:WARNING/MainProcess]self.strategies[name]=task.start_strategy(self.app,self)
[2019-10-1610:20:14,578:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/app/task.py",line448,ins
tart_strategy[2019-10-1610:20:14,578:WARNING/MainProcess]returninstantiate(self.Strategy,self,app,consumer,**kwargs)
[2019-10-1610:20:14,578:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/utils/imports.py",line53,
ininstantiate[2019-10-1610:20:14,578:WARNING/MainProcess]returnsymbol_by_name(name)(*args,**kwargs)
[2019-10-1610:20:14,578:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/kombu/utils/__init__.py",line96,
insymbol_by_name[2019-10-1610:20:14,578:WARNING/MainProcess]module=imp(module_name,package=package,**kwargs)
[2019-10-1610:20:14,579:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/importlib/__init__.py",line127,inimport_modul
e[2019-10-1610:20:14,579:WARNING/MainProcess]return_bootstrap._gcd_import(name[level:],package,level)
[2019-10-1610:20:14,579:WARNING/MainProcess]File"",line1006,in_gcd_import
[2019-10-1610:20:14,579:WARNING/MainProcess]File"",line983,in_find_and_load
[2019-10-1610:20:14,579:WARNING/MainProcess]File"",line967,in_find_and_load_unlocked
[2019-10-1610:20:14,579:WARNING/MainProcess]File"",line677,in_load_unlocked
[2019-10-1610:20:14,579:WARNING/MainProcess]File"",line724,inexec_module
[2019-10-1610:20:14,579:WARNING/MainProcess]File"",line860,inget_code
[2019-10-1610:20:14,580:WARNING/MainProcess]File"",line791,insource_to_code
[2019-10-1610:20:14,580:WARNING/MainProcess]File"",line219,in_call_with_frames_removed
[2019-10-1610:20:14,580:WARNING/MainProcess]File"/usr/local/python3/lib/python3.7/site-packages/celery/worker/strategy.py",line13
[2019-10-1610:20:14,580:WARNING/MainProcess]fromkombu.async.timerimportto_timestamp
[2019-10-1610:20:14,580:WARNING/MainProcess]^
[2019-10-1610:20:14,580:WARNING/MainProcess]SyntaxError
[2019-10-1610:20:14,580:WARNING/MainProcess]:
[2019-10-1610:20:14,580:WARNING/MainProcess]invalidsyntax
可以看到fromkombu.async.timerimportto_timestamp这句导包的时候报错在kombu中把async目录修改成了asynchronous,同时因为python3.7以后吧async变成了一个关键字,不能作为包来引用,因此报错,所以修改async为asynchronous
再次启动celery后获得以下日志
[2019-10-1610:27:14,497:INFO/Beat]beat:Starting...
[2019-10-1610:27:14,500:INFO/Beat]Writingentries(0)...
[2019-10-1610:27:14,545:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:27:14,545:INFO/Beat]Writingentries(0)...
[2019-10-1610:27:14,949:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:27:14,949:INFO/Beat]Writingentries(0)...
[2019-10-1610:27:15,029:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:27:15,029:INFO/Beat]Writingentries(0)...
[2019-10-1610:27:15,748:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:27:15,748:INFO/Beat]Writingentries(0)...
[2019-10-1610:27:16,427:INFO/Beat]DatabaseScheduler:Schedulechanged.
[2019-10-1610:27:16,427:INFO/Beat]Writingentries(0)...
[2019-10-1610:27:22,485:INFO/MainProcess]Connectedtoamqp://guest:**@127.0.0.1:5672//
[2019-10-1610:27:24,618:INFO/MainProcess]mingle:searchingforneighbors
[2019-10-1610:27:25,626:INFO/MainProcess]mingle:allalone
[2019-10-1610:27:25,648:WARNING/MainProcess]/usr/local/python3/lib/python3.7/site-packages/djcelery/loaders.py:133:UserWarning:Usi
ngsettings.DEBUGleadstoamemoryleak,neverusethissettinginproductionenvironments!warn('Usingsettings.DEBUGleadstoamemoryleak,never'
[2019-10-1610:27:25,648:WARNING/MainProcess]celery@test.ylyw.comready.
当出现celery@test.ylyw.comready.后,就可以确定celery正常运行了
希望上面整理的内容能够帮助到大家,感谢大家的学习和对毛票票的支持。