Python 芹菜因DBPageNotFoundError而死亡

Python 芹菜因DBPageNotFoundError而死亡,python,celery,supervisord,celerybeat,Python,Celery,Supervisord,Celerybeat,我有3台带有芹菜工人和rabbitmq作为代理的机器,一个工人使用beat flag运行,所有这些都由主管管理,有时芹菜会因为这样的错误而死亡。 此错误仅出现在beat worker上,但出现时,所有机器上的worker都会死亡。 (芹菜=3.1.12,甘布=3.0.20) [2014-07-05 08:37:04297:INFO/MainProcess]已连接到amqp://user:**@192.168.15.106:5672// [2014-07-05 08:37:04311:错误/节拍]

我有3台带有芹菜工人和rabbitmq作为代理的机器,一个工人使用beat flag运行,所有这些都由主管管理,有时芹菜会因为这样的错误而死亡。 此错误仅出现在beat worker上,但出现时,所有机器上的worker都会死亡。 (芹菜=3.1.12,甘布=3.0.20)

[2014-07-05 08:37:04297:INFO/MainProcess]已连接到amqp://user:**@192.168.15.106:5672//
[2014-07-05 08:37:04311:错误/节拍]过程节拍
回溯(最近一次呼叫最后一次):
文件“/var/projects/env/local/lib/python2.7/site packages/billiard/process.py”,第292行,在引导程序中
self.run()
文件“/var/projects/env/local/lib/python2.7/site packages/芹菜/beat.py”,第527行,运行中
self.service.start(嵌入式进程=True)
文件“/var/projects/env/local/lib/python2.7/site-packages/cellery/beat.py”,第453行,开头
人性化_秒(self.scheduler.max_interval))
文件“/var/projects/env/local/lib/python2.7/site-packages/kombu/utils/__-init___.py”,第322行,在__
value=obj.\uuuu dict\uuuu[self.\uuuuuu name\uuuuu]=self.\uuuuu get(obj)
调度器中的文件“/var/projects/env/local/lib/python2.7/site packages/cellery/beat.py”,第491行
返回self.get_调度程序()
文件“/var/projects/env/local/lib/python2.7/site packages/cellery/beat.py”,第486行,在get_调度器中
懒惰=懒惰)
文件“/var/projects/env/local/lib/python2.7/site packages/芹菜/utils/imports.py”,实例化中的第53行
返回符号按名称(名称)(*args,**kwargs)
文件“/var/projects/env/local/lib/python2.7/site packages/芹菜/beat.py”,第357行,在__
调度程序._初始化(self,*args,**kwargs)
文件“/var/projects/env/local/lib/python2.7/site packages/芹菜/beat.py”,第184行,在__
self.setup_schedule()
文件“/var/projects/env/local/lib/python2.7/site packages/芹菜/beat.py”,第376行,在安装计划中
self._存储['entries']
文件“/usr/lib/python2.7/shelve.py”,第121行,在__
f=StringIO(self.dict[key])
文件“/usr/lib/python2.7/bsddb/_init__.py”,第270行,在_getitem中__
return _DeadlockWrap(lambda:self.db[key])#self.db[key]
文件“/usr/lib/python2.7/bsddb/dbutils.py”,第68行,以死锁方式保存
返回函数(*_args,**_kwargs)
文件“/usr/lib/python2.7/bsddb/_init__.py”,第270行,在
return _DeadlockWrap(lambda:self.db[key])#self.db[key]
DBPageNotFoundError:(-30985,'DB_PAGE_NOTFOUND:未找到请求的页面')

我遇到了这个问题,原因是数据库文件损坏(通常称为“celerybeat schedule”)。 解决方案是删除现有的db文件并重新启动进程

Relavent:bsddb.db.DBPageNotFoundError

我不得不删除
/tmp
目录中的一些临时文件。其中一个被命名为
celeryd--state
,还有
celeryd--state被重命名为
。删除这些后,我可以重新启动受影响的工作程序。

尝试将beat作为独立程序启动,而不是使用-B,一些-db实现不喜欢处于从python进程派生出来的进程中。@asksol对我来说,该文件大约每2个月就会损坏一次:(我想知道是否有人深入调查了该问题。。。
[2014-07-05 08:37:04,297: INFO/MainProcess] Connected to amqp://user:**@192.168.15.106:5672//
[2014-07-05 08:37:04,311: ERROR/Beat] Process Beat
Traceback (most recent call last):
File "/var/projects/env/local/lib/python2.7/site-packages/billiard/process.py", line 292, in _bootstrap
self.run()
File "/var/projects/env/local/lib/python2.7/site-packages/celery/beat.py", line 527, in run
self.service.start(embedded_process=True)
File "/var/projects/env/local/lib/python2.7/site-packages/celery/beat.py", line 453, in start
humanize_seconds(self.scheduler.max_interval))
File "/var/projects/env/local/lib/python2.7/site-packages/kombu/utils/__init__.py", line 322, in __get__
value = obj.__dict__[self.__name__] = self.__get(obj)
File "/var/projects/env/local/lib/python2.7/site-packages/celery/beat.py", line 491, in scheduler
return self.get_scheduler()
File "/var/projects/env/local/lib/python2.7/site-packages/celery/beat.py", line 486, in get_scheduler
lazy=lazy)
File "/var/projects/env/local/lib/python2.7/site-packages/celery/utils/imports.py", line 53, in instantiate
return symbol_by_name(name)(*args, **kwargs)
File "/var/projects/env/local/lib/python2.7/site-packages/celery/beat.py", line 357, in __init__
Scheduler.__init__(self, *args, **kwargs)
File "/var/projects/env/local/lib/python2.7/site-packages/celery/beat.py", line 184, in __init__
self.setup_schedule()
File "/var/projects/env/local/lib/python2.7/site-packages/celery/beat.py", line 376, in setup_schedule
self._store['entries']
File "/usr/lib/python2.7/shelve.py", line 121, in __getitem__
f = StringIO(self.dict[key])
File "/usr/lib/python2.7/bsddb/__init__.py", line 270, in __getitem__
return _DeadlockWrap(lambda: self.db[key])  # self.db[key]
File "/usr/lib/python2.7/bsddb/dbutils.py", line 68, in DeadlockWrap
return function(*_args, **_kwargs)
File "/usr/lib/python2.7/bsddb/__init__.py", line 270, in <lambda>
return _DeadlockWrap(lambda: self.db[key])  # self.db[key]
DBPageNotFoundError: (-30985, 'DB_PAGE_NOTFOUND: Requested page not found')