Просмотр исходного кода

Added solo pool (i.e. no pool, just blocking inline)

Ask Solem 14 лет назад
Родитель
Сommit
1d55c1cd94
2 измененных файлов с 29 добавлено и 0 удалено
  1. 1 0
      celery/concurrency/__init__.py
  2. 28 0
      celery/concurrency/solo.py

+ 1 - 0
celery/concurrency/__init__.py

@@ -5,6 +5,7 @@ ALIASES = {
     "eventlet": "celery.concurrency.evlet.TaskPool",
     "eventlet": "celery.concurrency.evlet.TaskPool",
     "gevent": "celery.concurrency.evg.TaskPool",
     "gevent": "celery.concurrency.evg.TaskPool",
     "threads": "celery.concurrency.threads.TaskPool",
     "threads": "celery.concurrency.threads.TaskPool",
+    "solo": "celery.concurrency.solo.TaskPool",
 }
 }
 
 
 
 

+ 28 - 0
celery/concurrency/solo.py

@@ -0,0 +1,28 @@
+"""
+
+Process Pools.
+
+"""
+import os
+import signal as _signal
+
+from celery.concurrency.base import BasePool, apply_target
+
+
+class TaskPool(BasePool):
+    """Solo task pool (blocking, inline)."""
+
+    def on_start(self):
+        self.pid = os.getpid()
+
+    def on_apply(self, target, args, kwargs, callback=None,
+            accept_callback=None, **_):
+        return apply_target(target, args, kwargs,
+                            callback, accept_callback, self.pid)
+
+    def _get_info(self):
+        return {"max-concurrency": 1,
+                "processes": [self.pid],
+                "max-tasks-per-child": None,
+                "put-guarded-by-semaphore": True,
+                "timeouts": ()}