Pārlūkot izejas kodu

celery.beat: _Process must be pickleable to work in Windows.

Ask Solem 15 gadi atpakaļ
vecāks
revīzija
9599b41c2f
2 mainītis faili ar 28 papildinājumiem un 26 dzēšanām
  1. 27 26
      celery/beat.py
  2. 1 0
      celery/bin/celeryd.py

+ 27 - 26
celery/beat.py

@@ -230,43 +230,44 @@ class ClockService(object):
         return self._scheduler
 
 
-def EmbeddedClockService(*args, **kwargs):
-    """Return embedded clock service.
+class _Threaded(threading.Thread):
+    """Embedded clock service using threading."""
 
-    :keyword thread: Run threaded instead of as a separate process.
-        Default is ``False``.
+    def __init__(self, *args, **kwargs):
+        super(_Threaded, self).__init__()
+        self.clockservice = ClockService(*args, **kwargs)
+        self.setDaemon(True)
 
-    """
+    def run(self):
+        self.clockservice.start()
 
-    class _Threaded(threading.Thread):
-        """Embedded clock service using threading."""
+    def stop(self):
+        self.clockservice.stop(wait=True)
 
-        def __init__(self, *args, **kwargs):
-            super(_Threaded, self).__init__()
-            self.clockservice = ClockService(*args, **kwargs)
-            self.setDaemon(True)
 
-        def run(self):
-            self.clockservice.start()
+class _Process(multiprocessing.Process):
+    """Embedded clock service using multiprocessing."""
 
-        def stop(self):
-            self.clockservice.stop(wait=True)
+    def __init__(self, *args, **kwargs):
+        super(_Process, self).__init__()
+        self.clockservice = ClockService(*args, **kwargs)
 
-    class _Process(multiprocessing.Process):
-        """Embedded clock service using multiprocessing."""
+    def run(self):
+        platform.reset_signal("SIGTERM")
+        self.clockservice.start(embedded_process=True)
 
-        def __init__(self, *args, **kwargs):
-            super(_Process, self).__init__()
-            self.clockservice = ClockService(*args, **kwargs)
+    def stop(self):
+        self.clockservice.stop()
+        self.terminate()
 
-        def run(self):
-            platform.reset_signal("SIGTERM")
-            self.clockservice.start(embedded_process=True)
 
-        def stop(self):
-            self.clockservice.stop()
-            self.terminate()
+def EmbeddedClockService(*args, **kwargs):
+    """Return embedded clock service.
 
+    :keyword thread: Run threaded instead of as a separate process.
+        Default is ``False``.
+
+    """
     if kwargs.pop("thread", False):
         # Need short max interval to be able to stop thread
         # in reasonable time.

+ 1 - 0
celery/bin/celeryd.py

@@ -292,4 +292,5 @@ def main():
     return run_worker(**vars(options))
 
 if __name__ == "__main__":
+    multiprocessing.freeze_support()
     main()