소스 검색

Mediator makes eventlet+gevent hang

Ask Solem 13 년 전
부모
커밋
e114cc531c
3개의 변경된 파일5개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 0
      celery/concurrency/eventlet.py
  2. 1 1
      celery/worker/__init__.py
  3. 3 2
      celery/worker/mediator.py

+ 1 - 0
celery/concurrency/eventlet.py

@@ -102,6 +102,7 @@ class Timer(timer2.Timer):
 class TaskPool(base.BasePool):
     Timer = Timer
 
+    rlimit_safe = False
     signal_safe = False
     is_green = True
 

+ 1 - 1
celery/worker/__init__.py

@@ -269,7 +269,7 @@ class WorkController(configurated):
             self._shutdown(warm=False)
 
     def _shutdown(self, warm=True):
-        what = (warm and "stopping" or "terminating").capitalize()
+        what = "Stopping" if warm else "Terminating"
 
         if self._state in (self.CLOSE, self.TERMINATE):
             return

+ 3 - 2
celery/worker/mediator.py

@@ -35,8 +35,9 @@ class WorkerComponent(StartStopComponent):
 
     def __init__(self, w, **kwargs):
         w.mediator = None
-        if w.disable_rate_limits and not w.pool_cls.requires_mediator:
-            self.enabled = False
+
+    def include_if(self, w):
+        return not w.disable_rate_limits or w.pool_cls.requires_mediator
 
     def create(self, w):
         m = w.mediator = self.instantiate(w.mediator_cls, w.ready_queue,