|
@@ -11,6 +11,7 @@ from __future__ import absolute_import
|
|
|
import time
|
|
|
|
|
|
from collections import deque
|
|
|
+from contextlib import contextmanager
|
|
|
from copy import copy
|
|
|
|
|
|
from kombu.utils import cached_property
|
|
@@ -18,7 +19,7 @@ from kombu.utils.compat import OrderedDict
|
|
|
|
|
|
from . import current_app
|
|
|
from . import states
|
|
|
-from ._state import task_join_will_block
|
|
|
+from ._state import _set_task_join_will_block, task_join_will_block
|
|
|
from .app import app_or_default
|
|
|
from .datastructures import DependencyGraph, GraphFormatter
|
|
|
from .exceptions import IncompleteStream, TimeoutError
|
|
@@ -39,6 +40,16 @@ def assert_will_not_block():
|
|
|
raise RuntimeError(E_WOULDBLOCK)
|
|
|
|
|
|
|
|
|
+@contextmanager
|
|
|
+def allow_join_result():
|
|
|
+ reset_value = task_join_will_block()
|
|
|
+ _set_task_join_will_block(False)
|
|
|
+ try:
|
|
|
+ yield
|
|
|
+ finally:
|
|
|
+ _set_task_join_will_block(reset_value)
|
|
|
+
|
|
|
+
|
|
|
class ResultBase(object):
|
|
|
"""Base class for all results"""
|
|
|
|