Ver Fonte

Dont attempt restart if EMFILE raised

Ask Solem há 12 anos atrás
pai
commit
3b3e4cc646
1 ficheiros alterados com 5 adições e 1 exclusões
  1. 5 1
      celery/worker/consumer.py

+ 5 - 1
celery/worker/consumer.py

@@ -10,6 +10,7 @@ up and running.
 """
 from __future__ import absolute_import
 
+import errno
 import kombu
 import logging
 import socket
@@ -24,6 +25,7 @@ from billiard.common import restart_state
 from billiard.exceptions import RestartFreqExceeded
 from kombu.common import QoS, ignore_errors
 from kombu.syn import _detect_environment
+from kombu.utils.compat import get_errno
 from kombu.utils.encoding import safe_repr, bytes_t
 from kombu.utils.limits import TokenBucket
 
@@ -228,7 +230,9 @@ class Consumer(object):
             maybe_shutdown()
             try:
                 ns.start(self)
-            except self.connection_errors:
+            except self.connection_errors as exc:
+                if isinstance(exc, OSError) and get_errno(exc) == errno.EMFILE:
+                    raise  # Too many open files
                 maybe_shutdown()
                 try:
                     self._restart_state.step()