浏览代码

Added cleaning of corrupted scheduler files for some storage backend errors

Aleksandr Kuznetsov 9 年之前
父节点
当前提交
2cf12f59aa
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      celery/beat.py

+ 6 - 0
celery/beat.py

@@ -374,6 +374,12 @@ class PersistentScheduler(Scheduler):
     def setup_schedule(self):
         try:
             self._store = self._open_schedule()
+            # In some cases there may be different errors from a storage
+            # backend for corrupted files. Example - DBPageNotFoundError
+            # exception from bsddb. In such case the file will be
+            # successfully opened but the error will be raised on first key
+            # retrieving.
+            self._store.keys()
         except Exception as exc:
             self._store = self._destroy_open_corrupted_schedule(exc)