jararaca 0.3.11a12__tar.gz → 0.3.11a14__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.11a12 → jararaca-0.3.11a14}/PKG-INFO +1 -1
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/pyproject.toml +1 -1
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/cli.py +55 -41
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/LICENSE +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/README.md +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/CNAME +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/architecture.md +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/index.md +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/messagebus.md +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/scheduler.md +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/stylesheets/custom.css +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/websocket.md +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/__main__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/broker_backend/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/broker_backend/mapper.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/di.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/bus_message_controller.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/consumers/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/message.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/microservice.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/observability/decorators.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/observability/providers/otel.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/persistence/base.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/persistence/sort_filter.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/persistence/utilities.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/websocket/redis.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/py.typed +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/reflect/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/reflect/controller_inspect.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/reflect/metadata.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/scheduler/beat_worker.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/scheduler/types.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/tools/typescript/interface_parser.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/utils/__init__.py +0 -0
- {jararaca-0.3.11a12 → jararaca-0.3.11a14}/src/jararaca/utils/rabbitmq_utils.py +0 -0
|
@@ -78,6 +78,7 @@ async def declare_worker_infrastructure(
|
|
|
78
78
|
broker_url: str,
|
|
79
79
|
app: Microservice,
|
|
80
80
|
force: bool = False,
|
|
81
|
+
interactive_mode: bool = False,
|
|
81
82
|
) -> None:
|
|
82
83
|
"""
|
|
83
84
|
Declare the infrastructure (exchanges and queues) for worker.
|
|
@@ -100,25 +101,38 @@ async def declare_worker_infrastructure(
|
|
|
100
101
|
connection = await aio_pika.connect(broker_url)
|
|
101
102
|
channel = await connection.channel()
|
|
102
103
|
|
|
103
|
-
#
|
|
104
|
-
if force
|
|
105
|
-
|
|
104
|
+
# Only force delete infrastructure if requested at the beginning
|
|
105
|
+
if force or (
|
|
106
|
+
interactive_mode
|
|
107
|
+
and click.confirm(f"Delete existing infrastructure for exchange: {exchange}?")
|
|
108
|
+
):
|
|
109
|
+
click.echo(f"→ Deleting existing infrastructure for exchange: {exchange}")
|
|
106
110
|
await RabbitmqUtils.delete_exchange(channel, exchange)
|
|
107
111
|
await RabbitmqUtils.delete_exchange(channel, RabbitmqUtils.DEAD_LETTER_EXCHANGE)
|
|
108
112
|
await RabbitmqUtils.delete_queue(channel, RabbitmqUtils.DEAD_LETTER_QUEUE)
|
|
109
113
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
114
|
+
try:
|
|
115
|
+
await RabbitmqUtils.declare_main_exchange(
|
|
116
|
+
channel=channel,
|
|
117
|
+
exchange_name=exchange,
|
|
118
|
+
passive=False,
|
|
119
|
+
)
|
|
115
120
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
121
|
+
dlx = await RabbitmqUtils.declare_dl_exchange(channel=channel, passive=False)
|
|
122
|
+
dlq = await RabbitmqUtils.declare_dl_queue(channel=channel, passive=False)
|
|
123
|
+
await dlq.bind(dlx, routing_key=RabbitmqUtils.DEAD_LETTER_EXCHANGE)
|
|
124
|
+
except Exception as e:
|
|
125
|
+
click.echo(f"Error during exchange declaration: {e}")
|
|
126
|
+
if force or (
|
|
127
|
+
interactive_mode
|
|
128
|
+
and click.confirm("Error occurred. Recreate infrastructure?")
|
|
129
|
+
):
|
|
130
|
+
await channel.close()
|
|
131
|
+
await connection.close()
|
|
132
|
+
raise
|
|
133
|
+
click.echo("Skipping main exchange declaration due to error")
|
|
119
134
|
|
|
120
135
|
# Find all message handlers and scheduled actions
|
|
121
|
-
|
|
122
136
|
for instance_type in app.controllers:
|
|
123
137
|
controller_spec = MessageBusController.get_messagebus(instance_type)
|
|
124
138
|
if controller_spec is None:
|
|
@@ -127,50 +141,50 @@ async def declare_worker_infrastructure(
|
|
|
127
141
|
_, members = inspect_controller(instance_type)
|
|
128
142
|
|
|
129
143
|
# Declare queues for message handlers
|
|
130
|
-
for
|
|
131
|
-
|
|
144
|
+
for _, member in members.items():
|
|
132
145
|
message_handler = MessageHandler.get_message_incoming(
|
|
133
146
|
member.member_function
|
|
134
147
|
)
|
|
135
148
|
if message_handler is not None:
|
|
136
|
-
|
|
137
149
|
queue_name = f"{message_handler.message_type.MESSAGE_TOPIC}.{member.member_function.__module__}.{member.member_function.__qualname__}"
|
|
138
150
|
routing_key = f"{message_handler.message_type.MESSAGE_TOPIC}.#"
|
|
139
151
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
await RabbitmqUtils.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
+
try:
|
|
153
|
+
# Try to declare queue
|
|
154
|
+
queue = await RabbitmqUtils.declare_worker_queue(
|
|
155
|
+
channel=channel, queue_name=queue_name, passive=False
|
|
156
|
+
)
|
|
157
|
+
await queue.bind(exchange=exchange, routing_key=routing_key)
|
|
158
|
+
click.echo(
|
|
159
|
+
f"✓ Declared message handler queue: {queue_name} (routing key: {routing_key})"
|
|
160
|
+
)
|
|
161
|
+
except Exception as e:
|
|
162
|
+
click.echo(
|
|
163
|
+
f"⚠ Skipping message handler queue {queue_name} due to error: {e}"
|
|
164
|
+
)
|
|
165
|
+
continue
|
|
152
166
|
|
|
153
167
|
scheduled_action = ScheduledAction.get_scheduled_action(
|
|
154
168
|
member.member_function
|
|
155
169
|
)
|
|
156
170
|
if scheduled_action is not None:
|
|
157
|
-
|
|
158
|
-
# Declare queues for scheduled actions
|
|
159
|
-
|
|
160
171
|
queue_name = f"{member.member_function.__module__}.{member.member_function.__qualname__}"
|
|
161
172
|
routing_key = queue_name
|
|
162
173
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
await RabbitmqUtils.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
+
try:
|
|
175
|
+
# Try to declare queue
|
|
176
|
+
queue = await RabbitmqUtils.declare_scheduled_action_queue(
|
|
177
|
+
channel=channel, queue_name=queue_name, passive=False
|
|
178
|
+
)
|
|
179
|
+
await queue.bind(exchange=exchange, routing_key=routing_key)
|
|
180
|
+
click.echo(
|
|
181
|
+
f"✓ Declared scheduled action queue: {queue_name} (routing key: {routing_key})"
|
|
182
|
+
)
|
|
183
|
+
except Exception as e:
|
|
184
|
+
click.echo(
|
|
185
|
+
f"⚠ Skipping scheduled action queue {queue_name} due to error: {e}"
|
|
186
|
+
)
|
|
187
|
+
continue
|
|
174
188
|
|
|
175
189
|
await channel.close()
|
|
176
190
|
await connection.close()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.11a12 → jararaca-0.3.11a14}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg
RENAMED
|
File without changes
|
{jararaca-0.3.11a12 → jararaca-0.3.11a14}/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.11a12 → jararaca-0.3.11a14}/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
|
|
File without changes
|
|
File without changes
|