nebu 0.1.21__py3-none-any.whl → 0.1.23__py3-none-any.whl
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.
- nebu/__init__.py +1 -0
- nebu/processors/consumer.py +16 -20
- {nebu-0.1.21.dist-info → nebu-0.1.23.dist-info}/METADATA +1 -1
- {nebu-0.1.21.dist-info → nebu-0.1.23.dist-info}/RECORD +7 -7
- {nebu-0.1.21.dist-info → nebu-0.1.23.dist-info}/WHEEL +0 -0
- {nebu-0.1.21.dist-info → nebu-0.1.23.dist-info}/licenses/LICENSE +0 -0
- {nebu-0.1.21.dist-info → nebu-0.1.23.dist-info}/top_level.txt +0 -0
nebu/__init__.py
CHANGED
nebu/processors/consumer.py
CHANGED
@@ -260,7 +260,7 @@ except ResponseError as e:
|
|
260
260
|
|
261
261
|
|
262
262
|
# Function to process messages
|
263
|
-
def process_message(message_id:
|
263
|
+
def process_message(message_id: str, message_data: Dict[str, str]) -> None:
|
264
264
|
# Initialize variables that need to be accessible in the except block
|
265
265
|
return_stream = None
|
266
266
|
user_id = None
|
@@ -268,14 +268,11 @@ def process_message(message_id: bytes, message_data: Dict[bytes, bytes]) -> None
|
|
268
268
|
print(f"Message data inner: {message_data}")
|
269
269
|
|
270
270
|
try:
|
271
|
-
# Extract the JSON string payload from the
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
# If errors persist, we might need to re-add explicit decode checks.
|
277
|
-
if not payload_str or not isinstance(payload_str, str):
|
278
|
-
# Add a more specific check if needed later based on runtime errors
|
271
|
+
# Extract the JSON string payload from the 'data' field
|
272
|
+
payload_str = message_data.get("data")
|
273
|
+
|
274
|
+
# decode_responses=True should mean payload_str is a string if found.
|
275
|
+
if not payload_str:
|
279
276
|
raise ValueError(
|
280
277
|
f"Missing or invalid 'data' field (expected string): {message_data}"
|
281
278
|
)
|
@@ -308,10 +305,10 @@ def process_message(message_id: bytes, message_data: Dict[bytes, bytes]) -> None
|
|
308
305
|
|
309
306
|
# --- Health Check Logic based on kind ---
|
310
307
|
if kind == "HealthCheck":
|
311
|
-
print(f"Received HealthCheck message {message_id
|
308
|
+
print(f"Received HealthCheck message {message_id}")
|
312
309
|
health_response = {
|
313
310
|
"kind": "StreamResponseMessage", # Respond with a standard message kind
|
314
|
-
"id": message_id
|
311
|
+
"id": message_id,
|
315
312
|
"content": {"status": "healthy", "checked_message_id": msg_id},
|
316
313
|
"status": "success",
|
317
314
|
"created_at": datetime.now().isoformat(),
|
@@ -327,7 +324,7 @@ def process_message(message_id: bytes, message_data: Dict[bytes, bytes]) -> None
|
|
327
324
|
assert isinstance(REDIS_STREAM, str)
|
328
325
|
assert isinstance(REDIS_CONSUMER_GROUP, str)
|
329
326
|
r.xack(REDIS_STREAM, REDIS_CONSUMER_GROUP, message_id)
|
330
|
-
print(f"Acknowledged HealthCheck message {message_id
|
327
|
+
print(f"Acknowledged HealthCheck message {message_id}")
|
331
328
|
return # Exit early for health checks
|
332
329
|
# --- End Health Check Logic ---
|
333
330
|
|
@@ -393,13 +390,14 @@ def process_message(message_id: bytes, message_data: Dict[bytes, bytes]) -> None
|
|
393
390
|
# Otherwise use the param type directly
|
394
391
|
try:
|
395
392
|
if param_type_name in local_namespace:
|
396
|
-
|
393
|
+
print(f"Validating content against {param_type_name}")
|
394
|
+
input_obj = local_namespace[param_type_name].model_validate(content)
|
397
395
|
else:
|
398
396
|
# If we can't find the exact type, just pass the content directly
|
399
397
|
input_obj = content
|
400
398
|
except Exception as e:
|
401
399
|
print(f"Error creating input model: {e}, using raw content")
|
402
|
-
|
400
|
+
raise e
|
403
401
|
|
404
402
|
print(f"Input object: {input_obj}")
|
405
403
|
|
@@ -413,7 +411,7 @@ def process_message(message_id: bytes, message_data: Dict[bytes, bytes]) -> None
|
|
413
411
|
# Prepare the response
|
414
412
|
response = {
|
415
413
|
"kind": "StreamResponseMessage",
|
416
|
-
"id": message_id
|
414
|
+
"id": message_id,
|
417
415
|
"content": result,
|
418
416
|
"status": "success",
|
419
417
|
"created_at": datetime.now().isoformat(),
|
@@ -427,9 +425,7 @@ def process_message(message_id: bytes, message_data: Dict[bytes, bytes]) -> None
|
|
427
425
|
# Assert type again closer to usage for type checker clarity
|
428
426
|
assert isinstance(return_stream, str)
|
429
427
|
r.xadd(return_stream, {"data": json.dumps(response)})
|
430
|
-
print(
|
431
|
-
f"Processed message {message_id.decode('utf-8')}, result sent to {return_stream}"
|
432
|
-
)
|
428
|
+
print(f"Processed message {message_id}, result sent to {return_stream}")
|
433
429
|
|
434
430
|
# Acknowledge the message
|
435
431
|
# Assert types again closer to usage for type checker clarity
|
@@ -438,13 +434,13 @@ def process_message(message_id: bytes, message_data: Dict[bytes, bytes]) -> None
|
|
438
434
|
r.xack(REDIS_STREAM, REDIS_CONSUMER_GROUP, message_id)
|
439
435
|
|
440
436
|
except Exception as e:
|
441
|
-
print(f"Error processing message {message_id
|
437
|
+
print(f"Error processing message {message_id}: {e}")
|
442
438
|
traceback.print_exc()
|
443
439
|
|
444
440
|
# Prepare the error response
|
445
441
|
error_response = {
|
446
442
|
"kind": "StreamResponseMessage",
|
447
|
-
"id": message_id
|
443
|
+
"id": message_id,
|
448
444
|
"content": {
|
449
445
|
"error": str(e),
|
450
446
|
"traceback": traceback.format_exc(),
|
@@ -1,4 +1,4 @@
|
|
1
|
-
nebu/__init__.py,sha256=
|
1
|
+
nebu/__init__.py,sha256=mXfEfDp3kOi_HBMDGZVbQ26_M1JYgeHccjIIHzgEer0,357
|
2
2
|
nebu/auth.py,sha256=rApCd-7_c3GpIb7gjCB79rR7SOcmkG7MmaTE6zMbvr0,1125
|
3
3
|
nebu/config.py,sha256=XBY7uKgcJX9d1HGxqqpx87o_9DuF3maUlUnKkcpUrKU,4565
|
4
4
|
nebu/meta.py,sha256=CzFHMND9seuewzq9zNNx9WTr6JvrCBExe7BLqDSr7lM,745
|
@@ -6,15 +6,15 @@ nebu/containers/container.py,sha256=yb7KaPTVXnEEAlrpdlUi4HNqF6P7z9bmwAILGlq6iqU,
|
|
6
6
|
nebu/containers/decorator.py,sha256=uFtzlAXRHYZECJ-NPusY7oN9GXvdHrHDd_JNrIGr8aQ,3244
|
7
7
|
nebu/containers/models.py,sha256=0j6NGy4yto-enRDh_4JH_ZTbHrLdSpuMOqNQPnIrwC4,6815
|
8
8
|
nebu/containers/server.py,sha256=yFa2Y9PzBn59E1HftKiv0iapPonli2rbGAiU6r-wwe0,2513
|
9
|
-
nebu/processors/consumer.py,sha256=
|
9
|
+
nebu/processors/consumer.py,sha256=eB771cVKnjhGxTx2NTz-n4zKkibg9fxLLxCi4gB_FWU,19735
|
10
10
|
nebu/processors/decorate.py,sha256=AeG1c1n8JtcexxAEf2sF2L2eKwVDaNQ5gvPs6EpazKo,34789
|
11
11
|
nebu/processors/default.py,sha256=W4slJenG59rvyTlJ7gRp58eFfXcNOTT2Hfi6zzJAobI,365
|
12
12
|
nebu/processors/models.py,sha256=GvnI8UJrQSjHo2snP07cPfisCH90cEGTY-PZV5_AtXI,3654
|
13
13
|
nebu/processors/processor.py,sha256=oy2YdI-cy6qQWxrZhpZahJV46oWZlu_Im-jm811R_oo,9667
|
14
14
|
nebu/redis/models.py,sha256=coPovAcVXnOU1Xh_fpJL4PO3QctgK9nBe5QYoqEcnxg,1230
|
15
15
|
nebu/services/service.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
-
nebu-0.1.
|
17
|
-
nebu-0.1.
|
18
|
-
nebu-0.1.
|
19
|
-
nebu-0.1.
|
20
|
-
nebu-0.1.
|
16
|
+
nebu-0.1.23.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
17
|
+
nebu-0.1.23.dist-info/METADATA,sha256=ZOnuBrliRvCmAbndazULon2olbjde0-k33qzfPzcll0,1678
|
18
|
+
nebu-0.1.23.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
19
|
+
nebu-0.1.23.dist-info/top_level.txt,sha256=uLIbEKJeGSHWOAJN5S0i5XBGwybALlF9bYoB1UhdEgQ,5
|
20
|
+
nebu-0.1.23.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|