Skip to content

Commit 4badf8d

Browse files
committed
fix: add exception logging in kick() and add type hint for SQSClient
1 parent bf0871a commit 4badf8d

1 file changed

Lines changed: 18 additions & 13 deletions

File tree

taskiq_sqs/broker.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import boto3
77
from asyncer import asyncify
8-
from mypy_boto3_sqs.service_resource import Queue
8+
from mypy_boto3_sqs.service_resource import Queue, SQSClient
99
from taskiq import AsyncBroker
1010
from taskiq.abc.result_backend import AsyncResultBackend
1111
from taskiq.acks import AckableMessage
@@ -36,7 +36,7 @@ def __init__(
3636
raise BrokerError("A valid SQS Queue URL is required")
3737

3838
self.sqs_queue_url = sqs_queue_url
39-
self._sqs = boto3.resource("sqs")
39+
self._sqs: SQSClient = boto3.resource("sqs")
4040
self._sqs_queue: Optional[Queue] = None
4141

4242
if max_number_of_messages > 10:
@@ -75,17 +75,22 @@ async def kick(
7575
# Must be explicitly set as a label to a unix timestamp
7676
expiry = message.labels.pop("sqs_expiry", 0)
7777

78-
await asyncify(queue.send_message)(
79-
# SQS structured message attributes
80-
MessageAttributes={
81-
"expiry": {
82-
"StringValue": str(expiry),
83-
"DataType": "Number",
84-
}
85-
},
86-
MessageBody=message.message.decode("utf-8"),
87-
MessageGroupId=message.task_name,
88-
)
78+
try:
79+
await asyncify(queue.send_message)(
80+
# SQS structured message attributes
81+
MessageAttributes={
82+
"expiry": {
83+
"StringValue": str(expiry),
84+
"DataType": "Number",
85+
}
86+
},
87+
MessageBody=message.message.decode("utf-8"),
88+
MessageGroupId=message.task_name,
89+
)
90+
except Exception as err:
91+
# taskiq supresses the original exception, but it wold be good to know about
92+
logger.exception("Unhandled exception in SQSBroker")
93+
raise err
8994

9095
async def listen(self) -> AsyncGenerator[Union[bytes, AckableMessage], None]:
9196
"""

0 commit comments

Comments
 (0)