Skip to content

Commit ed3c789

Browse files
authored
Fixed message updates in retry middleware. (#32)
Before this patch retry middleware was updating actual taskiq message that were passed to the broker. Signed-off-by: Pavel Kirilin <[email protected]>
1 parent b79975a commit ed3c789

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

taskiq/middlewares/retry_middleware.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from copy import deepcopy
12
from logging import getLogger
23
from typing import Any
34

@@ -40,19 +41,19 @@ async def on_error(
4041
# Check if retrying is enabled for the task.
4142
if retry_on_error != "True":
4243
return
43-
44+
new_msg = deepcopy(message)
4445
# Getting number of previous retries.
45-
retries = int(message.labels.get("_retries", 0)) + 1
46-
message.labels["_retries"] = str(retries)
47-
max_retries = int(message.labels.get("max_retries", self.default_retry_count))
46+
retries = int(new_msg.labels.get("_retries", 0)) + 1
47+
new_msg.labels["_retries"] = str(retries)
48+
max_retries = int(new_msg.labels.get("max_retries", self.default_retry_count))
4849
if retries < max_retries:
4950
logger.info(
5051
"Task '%s' invocation failed. Retrying.",
5152
message.task_name,
5253
)
53-
message.labels["_parent"] = message.task_id
54-
message.task_id = self.broker.id_generator()
55-
broker_message = self.broker.formatter.dumps(message=message)
54+
new_msg.labels["_parent"] = message.task_id
55+
new_msg.task_id = self.broker.id_generator()
56+
broker_message = self.broker.formatter.dumps(message=new_msg)
5657
await self.broker.kick(broker_message)
5758
else:
5859
logger.warning(

0 commit comments

Comments
 (0)