如何修复 "Error Removing corrupted schedule file 'celerybeat-schedule': error('Bad magic number',)r"
How to fix "Error Removing corrupted schedule file 'celerybeat-schedule': error('Bad magic number',)r"
我可以 运行 使用终端中的命令正常打芹菜,但是当我在 aws 中转到 运行 时,出现以下错误:
[2019-07-10 11:30:35,166: ERROR/MainProcess] Removing corrupted schedule file 'celerybeat-schedule': error('Bad magic number',)
Traceback (most recent call last):
File "/opt/python/run/venv/local/lib/python3.6/site-packages/kombu/utils/objects.py", line 42, in __get__
return obj.__dict__[self.__name__]
KeyError: 'scheduler'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/python/run/venv/local/lib/python3.6/site-packages/celery/beat.py", line 476, in setup_schedule
self._store = self._open_schedule()
File "/opt/python/run/venv/local/lib/python3.6/site-packages/celery/beat.py", line 466, in _open_schedule
return self.persistence.open(self.schedule_filename, writeback=True)
File "/usr/lib64/python3.6/shelve.py", line 243, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "/usr/lib64/python3.6/shelve.py", line 227, in __init__
Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
File "/usr/lib64/python3.6/dbm/__init__.py", line 94, in open
return mod.open(file, flag, mode)
_gdbm.error: Bad magic number
有人可以帮我弄明白哪里出了问题吗?
- 停止芹菜服务
- 删除节拍文件,像这样
celerybeat-schedule.db
- 然后重新启动服务
最直接的修复方法很简单:
- 停止 Celery 节拍进程。
- 删除 celerybeat-schedule 文件。
- 启动 Celery 节拍进程。
我 运行 Celery 在 AWS 上击败了很多年,到目前为止还没有遇到任何问题。
取自 site.
Beat 需要将任务的最后 运行 次存储在本地数据库文件中(默认名为 celerybeat-schedule),因此它需要在当前目录中写入,或者您可以指定此文件的自定义位置:
celery -A proj beat -s /home/celery/var/run/celerybeat-schedule
我可以 运行 使用终端中的命令正常打芹菜,但是当我在 aws 中转到 运行 时,出现以下错误:
[2019-07-10 11:30:35,166: ERROR/MainProcess] Removing corrupted schedule file 'celerybeat-schedule': error('Bad magic number',)
Traceback (most recent call last):
File "/opt/python/run/venv/local/lib/python3.6/site-packages/kombu/utils/objects.py", line 42, in __get__
return obj.__dict__[self.__name__]
KeyError: 'scheduler'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/python/run/venv/local/lib/python3.6/site-packages/celery/beat.py", line 476, in setup_schedule
self._store = self._open_schedule()
File "/opt/python/run/venv/local/lib/python3.6/site-packages/celery/beat.py", line 466, in _open_schedule
return self.persistence.open(self.schedule_filename, writeback=True)
File "/usr/lib64/python3.6/shelve.py", line 243, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "/usr/lib64/python3.6/shelve.py", line 227, in __init__
Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
File "/usr/lib64/python3.6/dbm/__init__.py", line 94, in open
return mod.open(file, flag, mode)
_gdbm.error: Bad magic number
有人可以帮我弄明白哪里出了问题吗?
- 停止芹菜服务
- 删除节拍文件,像这样
celerybeat-schedule.db
- 然后重新启动服务
最直接的修复方法很简单:
- 停止 Celery 节拍进程。
- 删除 celerybeat-schedule 文件。
- 启动 Celery 节拍进程。
我 运行 Celery 在 AWS 上击败了很多年,到目前为止还没有遇到任何问题。
取自 site.
Beat 需要将任务的最后 运行 次存储在本地数据库文件中(默认名为 celerybeat-schedule),因此它需要在当前目录中写入,或者您可以指定此文件的自定义位置:
celery -A proj beat -s /home/celery/var/run/celerybeat-schedule