Browse Source

Bytes/unicode treated differently by Shelve. Closes #3346

Ask Solem 8 năm trước cách đây
mục cha
commit
cfe0d6a373
1 tập tin đã thay đổi với 15 bổ sung11 xóa
  1. 15 11
      celery/beat.py

+ 15 - 11
celery/beat.py

@@ -433,51 +433,55 @@ class PersistentScheduler(Scheduler):
 
         for _ in (1, 2):
             try:
-                self._store['entries']
+                self._store[b'entries']
             except KeyError:
                 # new schedule db
                 try:
-                    self._store['entries'] = {}
+                    self._store[b'entries'] = {}
                 except KeyError as exc:
                     self._store = self._destroy_open_corrupted_schedule(exc)
                     continue
             else:
-                if '__version__' not in self._store:
+                if b'__version__' not in self._store:
                     warning('DB Reset: Account for new __version__ field')
                     self._store.clear()   # remove schedule at 2.2.2 upgrade.
-                elif 'tz' not in self._store:
+                elif b'tz' not in self._store:
                     warning('DB Reset: Account for new tz field')
                     self._store.clear()   # remove schedule at 3.0.8 upgrade
-                elif 'utc_enabled' not in self._store:
+                elif b'utc_enabled' not in self._store:
                     warning('DB Reset: Account for new utc_enabled field')
                     self._store.clear()   # remove schedule at 3.0.9 upgrade
             break
 
         tz = self.app.conf.timezone
-        stored_tz = self._store.get('tz')
+        stored_tz = self._store.get(b'tz')
         if stored_tz is not None and stored_tz != tz:
             warning('Reset: Timezone changed from %r to %r', stored_tz, tz)
             self._store.clear()   # Timezone changed, reset db!
         utc = self.app.conf.enable_utc
-        stored_utc = self._store.get('utc_enabled')
+        stored_utc = self._store.get(b'utc_enabled')
         if stored_utc is not None and stored_utc != utc:
             choices = {True: 'enabled', False: 'disabled'}
             warning('Reset: UTC changed from %s to %s',
                     choices[stored_utc], choices[utc])
             self._store.clear()   # UTC setting changed, reset db!
-        entries = self._store.setdefault('entries', {})
+        entries = self._store.setdefault(b'entries', {})
         self.merge_inplace(self.app.conf.beat_schedule)
         self.install_default_entries(self.schedule)
-        self._store.update(__version__=__version__, tz=tz, utc_enabled=utc)
+        self._store.update({
+            b'__version__': __version__,
+            b'tz': tz,
+            b'utc_enabled': utc,
+        })
         self.sync()
         debug('Current schedule:\n' + '\n'.join(
             repr(entry) for entry in values(entries)))
 
     def get_schedule(self):
-        return self._store['entries']
+        return self._store[b'entries']
 
     def set_schedule(self, schedule):
-        self._store['entries'] = schedule
+        self._store[b'entries'] = schedule
     schedule = property(get_schedule, set_schedule)
 
     def sync(self):