celerybeat 启动时出现 UnpicklingError

UnpicklingError on celerybeat startup

我一直在为我的 django 项目使用 supervisord 运行 celery 一段时间,但 celerybeat 突然无法启动。它给出了以下回溯:

Traceback (most recent call last):
  File "[...]celery/apps/beat.py", line 112, in start_scheduler
    beat.start()
  File "[...]celery/beat.py", line 454, in start
    humanize_seconds(self.scheduler.max_interval))
  File "[...]kombu/utils/__init__.py", line 322, in __get__
    value = obj.__dict__[self.__name__] = self.__get(obj)
  File "[...]celery/beat.py", line 494, in scheduler
    return self.get_scheduler()
  File "[...]celery/beat.py", line 489, in get_scheduler
    lazy=lazy)
  File "[...]celery/utils/imports.py", line 53, in instantiate
    return symbol_by_name(name)(*args, **kwargs)
  File "[...]celery/beat.py", line 358, in __init__
    Scheduler.__init__(self, *args, **kwargs)
  File "[...]celery/beat.py", line 185, in __init__
    self.setup_schedule()
  File "[...]celery/beat.py", line 377, in setup_schedule
    self._store['entries']
  File "/usr/local/lib/python2.7/shelve.py", line 122, in __getitem__
    value = Unpickler(f).load()
UnpicklingError: pickle data was truncated

无法找到关于此的任何信息。

我拼出来的

此问题是由损坏的 celerybeat-schedule 文件引起的。要找到文件,请输入:

find ~/ -name celerybeat-schedule -print

然后删除或重命名文件:

mv [filename] [newfilename]

然后重新启动您的进程。