jararaca 0.3.12a12__tar.gz → 0.3.12a13__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.
Potentially problematic release.
This version of jararaca might be problematic. Click here for more details.
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/PKG-INFO +1 -1
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/pyproject.toml +1 -1
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/websocket/redis.py +29 -1
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/LICENSE +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/README.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/CNAME +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/architecture.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/http-rpc.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/index.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/interceptors.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/messagebus.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/retry.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/scheduler.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/stylesheets/custom.css +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/websocket.md +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/__main__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/broker_backend/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/broker_backend/mapper.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/cli.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/di.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/bus_message_controller.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/consumers/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/message.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/microservice.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/observability/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/observability/providers/otel.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/base.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/interceptors/constants.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/interceptors/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/sort_filter.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/utilities.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/py.typed +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/reflect/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/reflect/controller_inspect.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/reflect/metadata.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/scheduler/beat_worker.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/scheduler/types.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/tools/typescript/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/tools/typescript/decorators.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/tools/typescript/interface_parser.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/utils/__init__.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/utils/rabbitmq_utils.py +0 -0
- {jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/utils/retry.py +0 -0
|
@@ -58,6 +58,7 @@ class RedisWebSocketConnectionBackend(WebSocketConnectionBackend):
|
|
|
58
58
|
send_pubsub_channel: str,
|
|
59
59
|
consume_broadcast_timeout: int = 1,
|
|
60
60
|
consume_send_timeout: int = 1,
|
|
61
|
+
retry_delay: float = 5.0,
|
|
61
62
|
) -> None:
|
|
62
63
|
|
|
63
64
|
self.redis = conn
|
|
@@ -69,6 +70,7 @@ class RedisWebSocketConnectionBackend(WebSocketConnectionBackend):
|
|
|
69
70
|
|
|
70
71
|
self.consume_broadcast_timeout = consume_broadcast_timeout
|
|
71
72
|
self.consume_send_timeout = consume_send_timeout
|
|
73
|
+
self.retry_delay = retry_delay
|
|
72
74
|
self.__shutdown_event: asyncio.Event | None = None
|
|
73
75
|
|
|
74
76
|
self.__send_func: SendFunc | None = None
|
|
@@ -154,7 +156,10 @@ class RedisWebSocketConnectionBackend(WebSocketConnectionBackend):
|
|
|
154
156
|
logger.warning(
|
|
155
157
|
"Broadcast task completed, but shutdown event is not set. This is unexpected."
|
|
156
158
|
)
|
|
157
|
-
|
|
159
|
+
# Add delay before retrying to avoid excessive CPU usage
|
|
160
|
+
asyncio.get_event_loop().create_task(
|
|
161
|
+
self._retry_broadcast_consumer_with_delay()
|
|
162
|
+
)
|
|
158
163
|
|
|
159
164
|
def handle_send_task_done(self, task: asyncio.Task[Any]) -> None:
|
|
160
165
|
if task.cancelled():
|
|
@@ -170,6 +175,29 @@ class RedisWebSocketConnectionBackend(WebSocketConnectionBackend):
|
|
|
170
175
|
logger.warning(
|
|
171
176
|
"Send task completed, but shutdown event is not set. This is unexpected."
|
|
172
177
|
)
|
|
178
|
+
# Add delay before retrying to avoid excessive CPU usage
|
|
179
|
+
asyncio.get_event_loop().create_task(self._retry_send_consumer_with_delay())
|
|
180
|
+
|
|
181
|
+
async def _retry_broadcast_consumer_with_delay(self) -> None:
|
|
182
|
+
"""Retry setting up broadcast consumer after a delay to avoid excessive CPU usage."""
|
|
183
|
+
logger.info(
|
|
184
|
+
f"Waiting {self.retry_delay} seconds before retrying broadcast consumer..."
|
|
185
|
+
)
|
|
186
|
+
await asyncio.sleep(self.retry_delay)
|
|
187
|
+
|
|
188
|
+
if not self.shutdown_event.is_set():
|
|
189
|
+
logger.info("Retrying broadcast consumer setup...")
|
|
190
|
+
self.setup_broadcast_consumer()
|
|
191
|
+
|
|
192
|
+
async def _retry_send_consumer_with_delay(self) -> None:
|
|
193
|
+
"""Retry setting up send consumer after a delay to avoid excessive CPU usage."""
|
|
194
|
+
logger.info(
|
|
195
|
+
f"Waiting {self.retry_delay} seconds before retrying send consumer..."
|
|
196
|
+
)
|
|
197
|
+
await asyncio.sleep(self.retry_delay)
|
|
198
|
+
|
|
199
|
+
if not self.shutdown_event.is_set():
|
|
200
|
+
logger.info("Retrying send consumer setup...")
|
|
173
201
|
self.setup_send_consumer()
|
|
174
202
|
|
|
175
203
|
async def consume_broadcast(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg
RENAMED
|
File without changes
|
{jararaca-0.3.12a12 → jararaca-0.3.12a13}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp
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
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/broker_backend/redis_broker_backend.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
|
|
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
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/interceptors/constants.py
RENAMED
|
File without changes
|
{jararaca-0.3.12a12 → jararaca-0.3.12a13}/src/jararaca/persistence/interceptors/decorators.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
|
|
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
|
|
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
|