Skip to content

Commit a95ed37

Browse files
committed
fix: adjust backoff a bit so expired messages don't cause a full second of wait
1 parent ba506c5 commit a95ed37

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

taskiq_sqs/broker.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ async def listen(self) -> AsyncGenerator[Union[bytes, AckableMessage], None]:
9797

9898
# TODO: Consider using AckableMessage and confirm with the queue to reduce lost messages
9999
while True:
100-
last_had_message = False
100+
no_backoff = False
101101

102102
for message in await asyncify(queue.receive_messages)(
103103
MessageAttributeNames=[".*"]
@@ -113,16 +113,17 @@ async def listen(self) -> AsyncGenerator[Union[bytes, AckableMessage], None]:
113113
f"Message expired {now - expiry} seconds ago. Skipping."
114114
)
115115
await asyncify(message.delete)()
116+
no_backoff = True
116117
continue
117118
except TypeError:
118119
# Ignore weird expiries. Not critical.
119120
pass
120121

121122
yield message.body.encode("utf-8")
122123
await asyncify(message.delete)()
123-
last_had_message = True
124+
no_backoff = True
124125

125-
sleepdur = 0.1 if last_had_message else 1
126+
sleepdur = 0.01 if no_backoff else 1
126127
logger.debug(f"No messages on queue. Broker is sleeping for {sleepdur}s...")
127128
await asyncio.sleep(sleepdur)
128-
last_had_message = False
129+
no_backoff = False

0 commit comments

Comments
 (0)