소스 검색

Always flush queues on process down

Ask Solem 12 년 전
부모
커밋
70543df91f
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      celery/concurrency/processes.py

+ 5 - 1
celery/concurrency/processes.py

@@ -158,7 +158,10 @@ class ResultHandler(_pool.ResultHandler):
 
         while 1:
             fileno = (yield)
-            proc = fileno_to_outq[fileno]
+            try:
+                proc = fileno_to_outq[fileno]
+            except KeyError:
+                continue
             reader = proc.outq._reader
 
             try:
@@ -552,6 +555,7 @@ class TaskPool(BasePool):
         self._pool.on_process_up = on_process_up
 
         def on_process_down(proc):
+            pool.process_flush_queues(proc)
             fileno_to_outq.pop(proc.outqR_fd, None)
             fileno_to_inq.pop(proc.inqW_fd, None)
             fileno_to_synq.pop(proc.synqW_fd, None)