jararaca 0.3.11a11__tar.gz → 0.3.11a12__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.11a11 → jararaca-0.3.11a12}/PKG-INFO +1 -1
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/pyproject.toml +1 -1
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/cli.py +4 -7
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/scheduler/beat_worker.py +1 -1
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/utils/rabbitmq_utils.py +5 -56
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/LICENSE +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/README.md +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/CNAME +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/architecture.md +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/index.md +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/messagebus.md +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/scheduler.md +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/stylesheets/custom.css +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/websocket.md +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/__main__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/broker_backend/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/broker_backend/mapper.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/di.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/bus_message_controller.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/consumers/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/message.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/microservice.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/observability/decorators.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/observability/providers/otel.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/persistence/base.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/persistence/sort_filter.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/persistence/utilities.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/websocket/redis.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/py.typed +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/reflect/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/reflect/controller_inspect.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/reflect/metadata.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/scheduler/types.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/tools/typescript/interface_parser.py +0 -0
- {jararaca-0.3.11a11 → jararaca-0.3.11a12}/src/jararaca/utils/__init__.py +0 -0
|
@@ -142,7 +142,7 @@ async def declare_worker_infrastructure(
|
|
|
142
142
|
await RabbitmqUtils.delete_queue(channel, queue_name)
|
|
143
143
|
|
|
144
144
|
# Declare queue
|
|
145
|
-
queue = await RabbitmqUtils.
|
|
145
|
+
queue = await RabbitmqUtils.declare_worker_queue(
|
|
146
146
|
channel=channel, queue_name=queue_name, passive=not force
|
|
147
147
|
)
|
|
148
148
|
await queue.bind(exchange=exchange, routing_key=routing_key)
|
|
@@ -164,7 +164,7 @@ async def declare_worker_infrastructure(
|
|
|
164
164
|
if force:
|
|
165
165
|
await RabbitmqUtils.delete_queue(channel, queue_name)
|
|
166
166
|
|
|
167
|
-
queue = await RabbitmqUtils.
|
|
167
|
+
queue = await RabbitmqUtils.declare_scheduled_action_queue(
|
|
168
168
|
channel=channel, queue_name=queue_name, passive=not force
|
|
169
169
|
)
|
|
170
170
|
await queue.bind(exchange=exchange, routing_key=routing_key)
|
|
@@ -539,6 +539,7 @@ def gen_entity(entity_name: str, file_path: StreamWriter) -> None:
|
|
|
539
539
|
@click.argument(
|
|
540
540
|
"app_path",
|
|
541
541
|
type=str,
|
|
542
|
+
envvar="APP_PATH",
|
|
542
543
|
)
|
|
543
544
|
@click.option(
|
|
544
545
|
"--broker-url",
|
|
@@ -642,13 +643,9 @@ def declare(
|
|
|
642
643
|
click.echo(
|
|
643
644
|
f"→ Declaring worker infrastructure (URL: {broker_url_with_exchange})"
|
|
644
645
|
)
|
|
645
|
-
click.echo(
|
|
646
|
-
f"→ Declaring scheduler infrastructure (URL: {broker_url_with_exchange})"
|
|
647
|
-
)
|
|
648
|
-
|
|
649
646
|
await declare_worker_infrastructure(broker_url_with_exchange, app, force)
|
|
650
647
|
|
|
651
|
-
click.echo("✓
|
|
648
|
+
click.echo("✓ Workers infrastructure declared successfully!")
|
|
652
649
|
except Exception as e:
|
|
653
650
|
click.echo(f"ERROR: Failed to declare infrastructure: {e}", err=True)
|
|
654
651
|
raise
|
|
@@ -195,7 +195,7 @@ class _RabbitMQBrokerDispatcher(_MessageBrokerDispatcher):
|
|
|
195
195
|
queue_name = ScheduledAction.get_function_id(sched_act_data.callable)
|
|
196
196
|
|
|
197
197
|
# Try to get existing queue
|
|
198
|
-
await RabbitmqUtils.
|
|
198
|
+
await RabbitmqUtils.get_scheduled_action_queue(
|
|
199
199
|
channel=channel,
|
|
200
200
|
queue_name=queue_name,
|
|
201
201
|
)
|
|
@@ -222,7 +222,7 @@ class RabbitmqUtils:
|
|
|
222
222
|
raise
|
|
223
223
|
|
|
224
224
|
@classmethod
|
|
225
|
-
async def
|
|
225
|
+
async def declare_worker_queue(
|
|
226
226
|
cls,
|
|
227
227
|
channel: AbstractChannel,
|
|
228
228
|
queue_name: str,
|
|
@@ -243,64 +243,13 @@ class RabbitmqUtils:
|
|
|
243
243
|
)
|
|
244
244
|
|
|
245
245
|
@classmethod
|
|
246
|
-
async def
|
|
246
|
+
async def get_scheduled_action_queue(
|
|
247
247
|
cls,
|
|
248
248
|
channel: AbstractChannel,
|
|
249
249
|
queue_name: str,
|
|
250
250
|
) -> AbstractQueue:
|
|
251
251
|
"""
|
|
252
|
-
Get a
|
|
253
|
-
"""
|
|
254
|
-
try:
|
|
255
|
-
return await channel.get_queue(queue_name)
|
|
256
|
-
except ChannelNotFoundEntity as e:
|
|
257
|
-
logger.error(
|
|
258
|
-
f"Worker queue '{queue_name}' does not exist. "
|
|
259
|
-
f"Please use the declare command to create it first. Error: {e}"
|
|
260
|
-
)
|
|
261
|
-
raise
|
|
262
|
-
except ChannelClosed as e:
|
|
263
|
-
logger.error(
|
|
264
|
-
f"Channel closed while getting worker queue '{queue_name}'. "
|
|
265
|
-
f"Error: {e}"
|
|
266
|
-
)
|
|
267
|
-
raise
|
|
268
|
-
except AMQPError as e:
|
|
269
|
-
logger.error(
|
|
270
|
-
f"AMQP error while getting worker queue '{queue_name}'. " f"Error: {e}"
|
|
271
|
-
)
|
|
272
|
-
raise
|
|
273
|
-
|
|
274
|
-
@classmethod
|
|
275
|
-
async def declare_worker_v1_queue(
|
|
276
|
-
cls,
|
|
277
|
-
channel: AbstractChannel,
|
|
278
|
-
queue_name: str,
|
|
279
|
-
dlx_name: str,
|
|
280
|
-
dlq_name: str,
|
|
281
|
-
passive: bool = False,
|
|
282
|
-
) -> AbstractQueue:
|
|
283
|
-
"""
|
|
284
|
-
Declare a worker v1 queue with custom dead letter exchange and routing key.
|
|
285
|
-
"""
|
|
286
|
-
return await channel.declare_queue(
|
|
287
|
-
passive=passive,
|
|
288
|
-
name=queue_name,
|
|
289
|
-
arguments={
|
|
290
|
-
"x-dead-letter-exchange": dlx_name,
|
|
291
|
-
"x-dead-letter-routing-key": dlq_name,
|
|
292
|
-
},
|
|
293
|
-
durable=True,
|
|
294
|
-
)
|
|
295
|
-
|
|
296
|
-
@classmethod
|
|
297
|
-
async def get_scheduler_queue(
|
|
298
|
-
cls,
|
|
299
|
-
channel: AbstractChannel,
|
|
300
|
-
queue_name: str,
|
|
301
|
-
) -> AbstractQueue:
|
|
302
|
-
"""
|
|
303
|
-
Get a scheduler queue.
|
|
252
|
+
Get a scheduled action queue.
|
|
304
253
|
"""
|
|
305
254
|
try:
|
|
306
255
|
return await channel.get_queue(queue_name)
|
|
@@ -324,14 +273,14 @@ class RabbitmqUtils:
|
|
|
324
273
|
raise
|
|
325
274
|
|
|
326
275
|
@classmethod
|
|
327
|
-
async def
|
|
276
|
+
async def declare_scheduled_action_queue(
|
|
328
277
|
cls,
|
|
329
278
|
channel: AbstractChannel,
|
|
330
279
|
queue_name: str,
|
|
331
280
|
passive: bool = False,
|
|
332
281
|
) -> AbstractQueue:
|
|
333
282
|
"""
|
|
334
|
-
Declare a
|
|
283
|
+
Declare a scheduled action queue with simple durable configuration.
|
|
335
284
|
The queue has a max length of 1 to ensure only one scheduled task
|
|
336
285
|
is processed at a time.
|
|
337
286
|
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.11a11 → jararaca-0.3.11a12}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg
RENAMED
|
File without changes
|
{jararaca-0.3.11a11 → jararaca-0.3.11a12}/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
|
{jararaca-0.3.11a11 → jararaca-0.3.11a12}/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
|
|
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
|