Browse Source

Statedb was not saved at exit

Ask Solem 13 years ago
parent
commit
61894e6b98
2 changed files with 6 additions and 6 deletions
  1. 3 3
      celery/worker/__init__.py
  2. 3 3
      celery/worker/state.py

+ 3 - 3
celery/worker/__init__.py

@@ -8,6 +8,7 @@ This is the Celery worker process.
 """
 from __future__ import absolute_import
 
+import atexit
 import logging
 import socket
 import sys
@@ -166,9 +167,8 @@ class WorkController(object):
         self._finalize_db = None
 
         if self.db:
-            persistence = state.Persistent(self.db)
-            self._finalize_db = Finalize(persistence, persistence.save,
-                                         exitpriority=5)
+            self._persistence = state.Persistent(self.db)
+            atexit.register(self._persistence.save)
 
         # Queues
         if self.disable_rate_limits:

+ 3 - 3
celery/worker/state.py

@@ -105,7 +105,8 @@ class Persistent(object):
         self._load()
 
     def save(self):
-        self.sync(self.db).sync()
+        self.sync(self.db)
+        self.db.sync()
         self.close()
 
     def merge(self, d):
@@ -119,7 +120,7 @@ class Persistent(object):
         return d
 
     def open(self):
-        return self.storage.open(self.filename)
+        return self.storage.open(self.filename, writeback=True)
 
     def close(self):
         if self._is_open:
@@ -128,7 +129,6 @@ class Persistent(object):
 
     def _load(self):
         self.merge(self.db)
-        self.close()
 
     @cached_property
     def db(self):