Skip to content

Commit 15dee1c

Browse files
author
Mike Shultz
authored
Merge pull request #7 from ApeWorX/fix/delete-error
fix: handle visibility timeouts without crashing
2 parents 994a2ff + 34c5d88 commit 15dee1c

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

taskiq_sqs/broker.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import boto3
77
from asyncer import asyncify
8+
from botocore.exceptions import ClientError
89
from mypy_boto3_sqs.service_resource import Queue, SQSServiceResource
910
from taskiq import AsyncBroker
1011
from taskiq.abc.result_backend import AsyncResultBackend
@@ -144,7 +145,19 @@ async def listen(self) -> AsyncGenerator[Union[bytes, AckableMessage], None]:
144145
pass
145146

146147
yield message.body.encode("utf-8")
147-
await asyncify(message.delete)()
148+
149+
try:
150+
await asyncify(message.delete)()
151+
except ClientError as err:
152+
if "receipt handle has expired" in str(err):
153+
# while not ideal, we shouldn't die on this
154+
logger.error(
155+
"Message receipt handle has expired. This could indicate duplicate"
156+
"processing or tasks being processed late."
157+
)
158+
else:
159+
raise err
160+
148161
no_backoff = True
149162

150163
sleepdur = 0.01 if no_backoff else 1

0 commit comments

Comments
 (0)