scalable-pypeline 2.1.5__tar.gz → 2.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scalable-pypeline-2.1.5/scalable_pypeline.egg-info → scalable-pypeline-2.1.6}/PKG-INFO +1 -1
- scalable-pypeline-2.1.6/pypeline/__init__.py +1 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/constants.py +1 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/dramatiq.py +12 -1
- scalable-pypeline-2.1.6/pypeline/pipelines/middleware/get_active_worker_id_middleware.py +18 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6/scalable_pypeline.egg-info}/PKG-INFO +1 -1
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/SOURCES.txt +1 -0
- scalable-pypeline-2.1.5/pypeline/__init__.py +0 -1
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/LICENSE +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/MANIFEST.in +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/README.md +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/barrier.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/extensions.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/flask/__init__.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/flask/api/__init__.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/flask/api/pipelines.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/flask/api/schedules.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/flask/decorators.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/flask/flask_pypeline.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipeline_config_schema.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipeline_settings_schema.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/__init__.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/composition/__init__.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/composition/parallel_pipeline_composition.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/composition/pypeline_composition.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/factory.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/middleware/__init__.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/middleware/parallel_pipeline_middleware.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/middleware/pypeline_middleware.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pypeline_yaml.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/schedule_config_schema.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/utils/__init__.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/utils/config_utils.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/utils/dramatiq_utils.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/utils/module_utils.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/utils/pipeline_utils.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/utils/schema_utils.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/requirements.txt +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/dependency_links.txt +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/entry_points.txt +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/requires.txt +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/top_level.txt +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/setup.cfg +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/setup.py +0 -0
- {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/tests/fixtures/__init__.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "2.1.6"
|
@@ -36,6 +36,7 @@ DEFAULT_BROKER_CONNECTION_ATTEMPTS = int(
|
|
36
36
|
DEFAULT_BROKER_BLOCKED_CONNECTION_TIMEOUT = int(
|
37
37
|
os.getenv("DEFAULT_BROKER_BLOCKED_CONNECTION_TIMEOUT", 30)
|
38
38
|
)
|
39
|
+
DEFAULT_BROKER_HEARTBEAT_TIMEOUT = int("DEFAULT_BROKER_HEARTBEAT_TIMEOUT", 300_000)
|
39
40
|
MESSAGE_BROKER = os.getenv("MESSAGE_BROKER", "RABBITMQ")
|
40
41
|
|
41
42
|
MS_IN_SECONDS = 1000
|
@@ -34,6 +34,10 @@ from pypeline.constants import (
|
|
34
34
|
DEFAULT_BROKER_BLOCKED_CONNECTION_TIMEOUT,
|
35
35
|
DEFAULT_BROKER_CONNECTION_ATTEMPTS,
|
36
36
|
MESSAGE_BROKER,
|
37
|
+
DEFAULT_BROKER_HEARTBEAT_TIMEOUT,
|
38
|
+
)
|
39
|
+
from pypeline.pipelines.middleware.get_active_worker_id_middleware import (
|
40
|
+
GetActiveWorkerIdMiddleware,
|
37
41
|
)
|
38
42
|
from pypeline.pipelines.middleware.parallel_pipeline_middleware import ParallelPipeline
|
39
43
|
from pypeline.pipelines.middleware.pypeline_middleware import PypelineMiddleware
|
@@ -74,12 +78,19 @@ def configure_default_broker(broker: Broker = None):
|
|
74
78
|
)
|
75
79
|
|
76
80
|
elif MESSAGE_BROKER == "REDIS":
|
77
|
-
broker =
|
81
|
+
broker = (
|
82
|
+
broker
|
83
|
+
if broker is not None
|
84
|
+
else RedisBroker(
|
85
|
+
url=REDIS_URL, heartbeat_timeout=DEFAULT_BROKER_HEARTBEAT_TIMEOUT
|
86
|
+
)
|
87
|
+
)
|
78
88
|
|
79
89
|
broker.add_middleware(Results(backend=redis_backend))
|
80
90
|
broker.add_middleware(ParallelPipeline(redis_url=REDIS_URL))
|
81
91
|
broker.add_middleware(PypelineMiddleware(redis_url=REDIS_URL))
|
82
92
|
broker.add_middleware(CurrentMessage())
|
93
|
+
broker.add_middleware(GetActiveWorkerIdMiddleware())
|
83
94
|
register_actors_for_workers(broker)
|
84
95
|
set_broker(broker)
|
85
96
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import contextvars
|
2
|
+
from dramatiq import Middleware
|
3
|
+
|
4
|
+
|
5
|
+
class GetActiveWorkerIdMiddleware(Middleware):
|
6
|
+
_ACTIVE_WORKER_ID: contextvars.ContextVar["Optional[Message[Any]]"] = (
|
7
|
+
contextvars.ContextVar("_ACTIVE_WORKER_ID", default=None)
|
8
|
+
)
|
9
|
+
|
10
|
+
@classmethod
|
11
|
+
def get_active_worker_id(cls):
|
12
|
+
return cls._ACTIVE_WORKER_ID.get()
|
13
|
+
|
14
|
+
def before_process_message(self, broker, message):
|
15
|
+
self._ACTIVE_WORKER_ID.set(broker.broker_id)
|
16
|
+
|
17
|
+
def after_process_message(self, broker, message, *, result=None, exception=None):
|
18
|
+
self._ACTIVE_WORKER_ID.set(None)
|
@@ -25,6 +25,7 @@ pypeline/pipelines/composition/__init__.py
|
|
25
25
|
pypeline/pipelines/composition/parallel_pipeline_composition.py
|
26
26
|
pypeline/pipelines/composition/pypeline_composition.py
|
27
27
|
pypeline/pipelines/middleware/__init__.py
|
28
|
+
pypeline/pipelines/middleware/get_active_worker_id_middleware.py
|
28
29
|
pypeline/pipelines/middleware/parallel_pipeline_middleware.py
|
29
30
|
pypeline/pipelines/middleware/pypeline_middleware.py
|
30
31
|
pypeline/utils/__init__.py
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "2.1.5"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/composition/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/pypeline/pipelines/middleware/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/dependency_links.txt
RENAMED
File without changes
|
{scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/entry_points.txt
RENAMED
File without changes
|
File without changes
|
{scalable-pypeline-2.1.5 → scalable-pypeline-2.1.6}/scalable_pypeline.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|