Repository navigation
Expand file tree
/
Copy pathmiddleware.py
More file actions
128 lines (99 loc) · 3.48 KB
/
Copy pathmiddleware.py
File metadata and controls
128 lines (99 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
from typing import TYPE_CHECKING, Any, Coroutine, Union
if TYPE_CHECKING: # pragma: no cover # pragma: no cover
from taskiq.abc.broker import AsyncBroker
from taskiq.message import TaskiqMessage
from taskiq.result import TaskiqResult
class TaskiqMiddleware: # pragma: no cover
"""Base class for middlewares."""
def __init__(self) -> None:
self.broker: "AsyncBroker" = None # type: ignore
def set_broker(self, broker: "AsyncBroker") -> None:
"""
Sets broker to middleware.
:param broker: broker to set.
"""
self.broker = broker
def startup(self) -> "Union[None, Coroutine[Any, Any, None]]":
"""
Startup method to perform various action during startup.
This function can be either sync or async.
Executed during broker's startup.
:returns nothing.
"""
def shutdown(self) -> "Union[None, Coroutine[Any, Any, None]]":
"""
Shutdown method to perform various action during shutdown.
This function can be either sync or async.
Executed during broker's shutdown.
:returns nothing.
"""
def pre_send(
self,
message: "TaskiqMessage",
) -> "Union[TaskiqMessage, Coroutine[Any, Any, TaskiqMessage]]":
"""
Hook that executes before sending the task to worker.
This is a client-side hook, that executes right before
the message is sent to broker.
:param message: message to send.
:return: modified message.
"""
return message
def post_send(
self,
message: "TaskiqMessage",
) -> "Union[None, Coroutine[Any, Any, None]]":
"""
This hook is executed right after the task is sent.
This is a client-side hook. It executes right
after the messages is kicked in broker.
:param message: kicked message.
"""
def pre_execute(
self,
message: "TaskiqMessage",
) -> "Union[TaskiqMessage, Coroutine[Any, Any, TaskiqMessage]]":
"""
This hook is called before executing task.
This is a worker-side hook, which means it
executes in the worker process.
:param message: incoming parsed taskiq message.
:return: modified message.
"""
return message
def post_execute(
self,
message: "TaskiqMessage",
result: "TaskiqResult[Any]",
) -> "Union[None, Coroutine[Any, Any, None]]":
"""
This hook executes after task is complete.
This is a worker-side hook. It's called
in worker process.
:param message: incoming message.
:param result: result of execution for current task.
"""
def post_save(
self,
message: "TaskiqMessage",
result: "TaskiqResult[Any]",
) -> "Union[None, Coroutine[Any, Any, None]]":
"""
Post save hook.
This function is called after result of
the executions is saved in the result_backend.
:param message: processed message.
:param result: returned value.
"""
def on_error(
self,
message: "TaskiqMessage",
result: "TaskiqResult[Any]",
exception: BaseException,
) -> "Union[None, Coroutine[Any, Any, None]]":
"""
This function is called when exception is found.
:param message: incoming message.
:param result: returned value.
:param exception: found exception.
"""