Browse Source

Added concurrency model aliases: eventlet, gevent, processes

Ask Solem 14 years ago
parent
commit
d3860f8880
2 changed files with 14 additions and 1 deletions
  1. 11 0
      celery/concurrency/__init__.py
  2. 3 1
      celery/worker/__init__.py

+ 11 - 0
celery/concurrency/__init__.py

@@ -0,0 +1,11 @@
+from celery.utils import get_cls_by_name
+
+ALIASES = {
+    "processes": "celery.concurrency.processes.TaskPool",
+    "eventlet": "celery.concurrency.evlet.TaskPool",
+    "gevent": "celery.concurrency.evg.TaskPool",
+}
+
+
+def get_implementation(cls):
+    return get_cls_by_name(cls, ALIASES)

+ 3 - 1
celery/worker/__init__.py

@@ -4,6 +4,7 @@ import traceback
 from multiprocessing.util import Finalize
 
 from celery import beat
+from celery import concurrency as _concurrency
 from celery import registry
 from celery import platforms
 from celery import signals
@@ -114,7 +115,8 @@ class WorkController(object):
         if send_events is None:
             send_events = conf.CELERY_SEND_EVENTS
         self.send_events = send_events
-        self.pool_cls = pool_cls or conf.CELERYD_POOL
+        self.pool_cls = _concurrency.get_implementation(
+                            pool_cls or conf.CELERYD_POOL)
         self.consumer_cls = consumer_cls or conf.CELERYD_CONSUMER
         self.mediator_cls = mediator_cls or conf.CELERYD_MEDIATOR
         self.eta_scheduler_cls = eta_scheduler_cls or \