scalable-pypeline 2.1.5__tar.gz → 2.1.7__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.
Files changed (45) hide show
  1. {scalable-pypeline-2.1.5/scalable_pypeline.egg-info → scalable-pypeline-2.1.7}/PKG-INFO +1 -1
  2. scalable-pypeline-2.1.7/pypeline/__init__.py +1 -0
  3. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/constants.py +3 -0
  4. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/dramatiq.py +12 -1
  5. scalable-pypeline-2.1.7/pypeline/pipelines/middleware/get_active_worker_id_middleware.py +18 -0
  6. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7/scalable_pypeline.egg-info}/PKG-INFO +1 -1
  7. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/scalable_pypeline.egg-info/SOURCES.txt +1 -0
  8. scalable-pypeline-2.1.5/pypeline/__init__.py +0 -1
  9. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/LICENSE +0 -0
  10. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/MANIFEST.in +0 -0
  11. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/README.md +0 -0
  12. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/barrier.py +0 -0
  13. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/extensions.py +0 -0
  14. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/flask/__init__.py +0 -0
  15. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/flask/api/__init__.py +0 -0
  16. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/flask/api/pipelines.py +0 -0
  17. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/flask/api/schedules.py +0 -0
  18. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/flask/decorators.py +0 -0
  19. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/flask/flask_pypeline.py +0 -0
  20. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipeline_config_schema.py +0 -0
  21. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipeline_settings_schema.py +0 -0
  22. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/__init__.py +0 -0
  23. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/composition/__init__.py +0 -0
  24. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/composition/parallel_pipeline_composition.py +0 -0
  25. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/composition/pypeline_composition.py +0 -0
  26. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/factory.py +0 -0
  27. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/middleware/__init__.py +0 -0
  28. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/middleware/parallel_pipeline_middleware.py +0 -0
  29. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pipelines/middleware/pypeline_middleware.py +0 -0
  30. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/pypeline_yaml.py +0 -0
  31. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/schedule_config_schema.py +0 -0
  32. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/utils/__init__.py +0 -0
  33. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/utils/config_utils.py +0 -0
  34. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/utils/dramatiq_utils.py +0 -0
  35. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/utils/module_utils.py +0 -0
  36. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/utils/pipeline_utils.py +0 -0
  37. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/pypeline/utils/schema_utils.py +0 -0
  38. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/requirements.txt +0 -0
  39. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/scalable_pypeline.egg-info/dependency_links.txt +0 -0
  40. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/scalable_pypeline.egg-info/entry_points.txt +0 -0
  41. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/scalable_pypeline.egg-info/requires.txt +0 -0
  42. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/scalable_pypeline.egg-info/top_level.txt +0 -0
  43. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/setup.cfg +0 -0
  44. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/setup.py +0 -0
  45. {scalable-pypeline-2.1.5 → scalable-pypeline-2.1.7}/tests/fixtures/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scalable-pypeline
3
- Version: 2.1.5
3
+ Version: 2.1.7
4
4
  Summary: PypeLine - Python pipelines for the Real World
5
5
  Home-page: https://gitlab.com/bravos2/pypeline
6
6
  Author: Bravos Power Corporation
@@ -0,0 +1 @@
1
+ __version__ = "2.1.7"
@@ -36,6 +36,9 @@ 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(
40
+ os.getenv("DEFAULT_BROKER_HEARTBEAT_TIMEOUT", 300000)
41
+ )
39
42
  MESSAGE_BROKER = os.getenv("MESSAGE_BROKER", "RABBITMQ")
40
43
 
41
44
  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 = broker if broker is not None else RedisBroker(url=REDIS_URL)
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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scalable-pypeline
3
- Version: 2.1.5
3
+ Version: 2.1.7
4
4
  Summary: PypeLine - Python pipelines for the Real World
5
5
  Home-page: https://gitlab.com/bravos2/pypeline
6
6
  Author: Bravos Power Corporation
@@ -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"