11import pickle
2- from typing import Any , Dict , TypeVar
2+ from typing import TypeVar
33
44from redis .asyncio import ConnectionPool , Redis
55from taskiq .abc .result_backend import TaskiqResult
@@ -13,11 +13,7 @@ class RedisAsyncResultBackend(AsyncResultBackend[_ReturnType]):
1313 """Async result based on redis."""
1414
1515 def __init__ (self , redis_url : str ):
16- self .redis_url = redis_url
17-
18- async def startup (self ) -> None :
19- """Makes redis connection on startup."""
20- self .redis_pool = ConnectionPool .from_url (self .redis_url )
16+ self .redis_pool = ConnectionPool .from_url (redis_url )
2117
2218 async def shutdown (self ) -> None :
2319 """Closes redis connection."""
@@ -57,9 +53,9 @@ async def is_result_ready(self, task_id: str) -> bool:
5753 :returns: True if the result is ready else False.
5854 """
5955 async with Redis (connection_pool = self .redis_pool ) as redis :
60- return await redis .exists (task_id )
56+ return bool ( await redis .exists (task_id ) )
6157
62- async def get_result (
58+ async def get_result ( # noqa: WPS210
6359 self ,
6460 task_id : str ,
6561 with_logs : bool = False ,
@@ -71,20 +67,20 @@ async def get_result(
7167 :param with_logs: if True it will download task's logs.
7268 :return: task's return value.
7369 """
74- result : Dict [str , Any ] = {
75- result_key : None for result_key in TaskiqResult .__fields__
76- }
70+ fields = list (TaskiqResult .__fields__ .keys ())
7771
7872 if not with_logs :
79- result . pop ("log" )
73+ fields . remove ("log" )
8074
8175 async with Redis (connection_pool = self .redis_pool ) as redis :
8276 result_values = await redis .hmget (
8377 name = task_id ,
84- keys = result ,
78+ keys = fields ,
8579 )
8680
87- for result_value , result_key in zip (result_values , result ):
88- result [result_key ] = pickle .loads (result_value )
81+ result = {
82+ result_key : pickle .loads (result_value )
83+ for result_value , result_key in zip (result_values , fields )
84+ }
8985
9086 return TaskiqResult (** result )
0 commit comments