11import inspect
22from collections import OrderedDict
3- from concurrent .futures import ThreadPoolExecutor
43from typing import Any , Callable , Coroutine , Optional , TypeVar
54
65from taskiq .abc .broker import AsyncBroker
76from taskiq .abc .result_backend import AsyncResultBackend , TaskiqResult
8- from taskiq .cli .async_task_runner import run_task
9- from taskiq .exceptions import ResultSetError , TaskiqError
7+ from taskiq .cli .args import TaskiqArgs
8+ from taskiq .cli .receiver import Receiver
9+ from taskiq .exceptions import TaskiqError
1010from taskiq .message import BrokerMessage
1111
1212_ReturnType = TypeVar ("_ReturnType" )
@@ -100,16 +100,16 @@ def __init__( # noqa: WPS211
100100 result_backend = result_backend ,
101101 task_id_generator = task_id_generator ,
102102 )
103- self .executor = ThreadPoolExecutor ( max_workers = sync_tasks_pool_size )
104- self . cast_types = cast_types
105- if logs_format is None :
106- logs_format = (
107- "[%(asctime)s]"
108- "[%(levelname)-7s]"
109- "[%(module)s:%(funcName)s:%(lineno)d] "
110- "%(message)s"
111- )
112- self . logs_format = logs_format
103+ self .receiver = Receiver (
104+ self ,
105+ TaskiqArgs (
106+ broker = "" ,
107+ modules = [],
108+ max_threadpool_threads = sync_tasks_pool_size ,
109+ no_parse = not cast_types ,
110+ log_collector_format = logs_format or TaskiqArgs . log_collector_format ,
111+ ),
112+ )
113113
114114 async def kick (self , message : BrokerMessage ) -> None :
115115 """
@@ -119,25 +119,20 @@ async def kick(self, message: BrokerMessage) -> None:
119119
120120 :param message: incomming message.
121121
122- :raises ResultSetError: if cannot save results in result backend.
123122 :raises TaskiqError: if someone wants to kick unknown task.
124123 """
125124 target_task = self .available_tasks .get (message .task_name )
126- taskiq_message = self .formatter .loads (message = message )
127125 if target_task is None :
128126 raise TaskiqError ("Unknown task." )
129- result = await run_task (
130- target = target_task .original_func ,
131- signature = inspect .signature (target_task .original_func ),
132- message = taskiq_message ,
133- log_collector_format = self .logs_format ,
134- executor = self .executor ,
135- middlewares = self .middlewares ,
136- )
137- try :
138- await self .result_backend .set_result (message .task_id , result )
139- except Exception as exc :
140- raise ResultSetError ("Cannot set result." ) from exc
127+ if self .receiver .task_signatures :
128+ if not self .receiver .task_signatures .get (target_task .task_name ):
129+ self .receiver .task_signatures [
130+ target_task .task_name
131+ ] = inspect .signature (
132+ target_task .original_func ,
133+ )
134+
135+ await self .receiver .callback (message = message )
141136
142137 async def listen (
143138 self ,
0 commit comments