Prechádzať zdrojové kódy

gevent.Timeout inherits from BaseException :anger1:

Ask Solem 11 rokov pred
rodič
commit
b44544fe65
2 zmenil súbory, kde vykonal 5 pridanie a 2 odobranie
  1. 3 1
      celery/concurrency/base.py
  2. 2 1
      celery/concurrency/gevent.py

+ 3 - 1
celery/concurrency/base.py

@@ -27,11 +27,13 @@ logger = get_logger('celery.pool')
 
 
 def apply_target(target, args=(), kwargs={}, callback=None,
 def apply_target(target, args=(), kwargs={}, callback=None,
                  accept_callback=None, pid=None, getpid=os.getpid,
                  accept_callback=None, pid=None, getpid=os.getpid,
-                 monotonic=monotonic, **_):
+                 propagate=(), monotonic=monotonic, **_):
     if accept_callback:
     if accept_callback:
         accept_callback(pid or getpid(), monotonic())
         accept_callback(pid or getpid(), monotonic())
     try:
     try:
         ret = target(*args, **kwargs)
         ret = target(*args, **kwargs)
+    except propagate:
+        raise
     except Exception:
     except Exception:
         raise
         raise
     except BaseException as exc:
     except BaseException as exc:

+ 2 - 1
celery/concurrency/gevent.py

@@ -29,7 +29,8 @@ def apply_timeout(target, args=(), kwargs={}, callback=None,
     try:
     try:
         with Timeout(timeout):
         with Timeout(timeout):
             return apply_target(target, args, kwargs, callback,
             return apply_target(target, args, kwargs, callback,
-                                accept_callback, pid, **rest)
+                                accept_callback, pid,
+                                propagate=(Timeout, ), **rest)
     except Timeout:
     except Timeout:
         return timeout_callback(False, timeout)
         return timeout_callback(False, timeout)