@@ -56,6 +56,7 @@ def __init__(
56
56
result_px_time : Optional [int ] = None ,
57
57
max_connection_pool_size : Optional [int ] = None ,
58
58
serializer : Optional [TaskiqSerializer ] = None ,
59
+ prefix_str : Optional [str ] = None ,
59
60
** connection_kwargs : Any ,
60
61
) -> None :
61
62
"""
@@ -82,6 +83,7 @@ def __init__(
82
83
self .keep_results = keep_results
83
84
self .result_ex_time = result_ex_time
84
85
self .result_px_time = result_px_time
86
+ self .prefix_str = prefix_str
85
87
86
88
unavailable_conditions = any (
87
89
(
@@ -99,6 +101,11 @@ def __init__(
99
101
"Choose either result_ex_time or result_px_time." ,
100
102
)
101
103
104
+ def _task_name (self , task_id : str ) -> str :
105
+ if self .prefix_str is None :
106
+ return task_id
107
+ return f"{ self .prefix_str } :{ task_id } "
108
+
102
109
async def shutdown (self ) -> None :
103
110
"""Closes redis connection."""
104
111
await self .redis_pool .disconnect ()
@@ -119,7 +126,7 @@ async def set_result(
119
126
:param result: TaskiqResult instance.
120
127
"""
121
128
redis_set_params : Dict [str , Union [str , int , bytes ]] = {
122
- "name" : task_id ,
129
+ "name" : self . _task_name ( task_id ) ,
123
130
"value" : self .serializer .dumpb (model_dump (result )),
124
131
}
125
132
if self .result_ex_time :
@@ -139,7 +146,7 @@ async def is_result_ready(self, task_id: str) -> bool:
139
146
:returns: True if the result is ready else False.
140
147
"""
141
148
async with Redis (connection_pool = self .redis_pool ) as redis :
142
- return bool (await redis .exists (task_id ))
149
+ return bool (await redis .exists (self . _task_name ( task_id ) ))
143
150
144
151
async def get_result (
145
152
self ,
@@ -154,14 +161,15 @@ async def get_result(
154
161
:raises ResultIsMissingError: if there is no result when trying to get it.
155
162
:return: task's return value.
156
163
"""
164
+ task_name = self ._task_name (task_id )
157
165
async with Redis (connection_pool = self .redis_pool ) as redis :
158
166
if self .keep_results :
159
167
result_value = await redis .get (
160
- name = task_id ,
168
+ name = task_name ,
161
169
)
162
170
else :
163
171
result_value = await redis .getdel (
164
- name = task_id ,
172
+ name = task_name ,
165
173
)
166
174
167
175
if result_value is None :
@@ -192,7 +200,7 @@ async def set_progress(
192
200
:param result: task's TaskProgress instance.
193
201
"""
194
202
redis_set_params : Dict [str , Union [str , int , bytes ]] = {
195
- "name" : task_id + PROGRESS_KEY_SUFFIX ,
203
+ "name" : self . _task_name ( task_id ) + PROGRESS_KEY_SUFFIX ,
196
204
"value" : self .serializer .dumpb (model_dump (progress )),
197
205
}
198
206
if self .result_ex_time :
@@ -215,7 +223,7 @@ async def get_progress(
215
223
"""
216
224
async with Redis (connection_pool = self .redis_pool ) as redis :
217
225
result_value = await redis .get (
218
- name = task_id + PROGRESS_KEY_SUFFIX ,
226
+ name = self . _task_name ( task_id ) + PROGRESS_KEY_SUFFIX ,
219
227
)
220
228
221
229
if result_value is None :
@@ -237,6 +245,7 @@ def __init__(
237
245
result_ex_time : Optional [int ] = None ,
238
246
result_px_time : Optional [int ] = None ,
239
247
serializer : Optional [TaskiqSerializer ] = None ,
248
+ prefix_str : Optional [str ] = None ,
240
249
** connection_kwargs : Any ,
241
250
) -> None :
242
251
"""
@@ -261,6 +270,7 @@ def __init__(
261
270
self .keep_results = keep_results
262
271
self .result_ex_time = result_ex_time
263
272
self .result_px_time = result_px_time
273
+ self .prefix_str = prefix_str
264
274
265
275
unavailable_conditions = any (
266
276
(
@@ -278,6 +288,11 @@ def __init__(
278
288
"Choose either result_ex_time or result_px_time." ,
279
289
)
280
290
291
+ def _task_name (self , task_id : str ) -> str :
292
+ if self .prefix_str is None :
293
+ return task_id
294
+ return f"{ self .prefix_str } :{ task_id } "
295
+
281
296
async def shutdown (self ) -> None :
282
297
"""Closes redis connection."""
283
298
await self .redis .aclose () # type: ignore[attr-defined]
@@ -298,7 +313,7 @@ async def set_result(
298
313
:param result: TaskiqResult instance.
299
314
"""
300
315
redis_set_params : Dict [str , Union [str , bytes , int ]] = {
301
- "name" : task_id ,
316
+ "name" : self . _task_name ( task_id ) ,
302
317
"value" : self .serializer .dumpb (model_dump (result )),
303
318
}
304
319
if self .result_ex_time :
@@ -316,7 +331,7 @@ async def is_result_ready(self, task_id: str) -> bool:
316
331
317
332
:returns: True if the result is ready else False.
318
333
"""
319
- return bool (await self .redis .exists (task_id )) # type: ignore[attr-defined]
334
+ return bool (await self .redis .exists (self . _task_name ( task_id ) )) # type: ignore[attr-defined]
320
335
321
336
async def get_result (
322
337
self ,
@@ -331,13 +346,14 @@ async def get_result(
331
346
:raises ResultIsMissingError: if there is no result when trying to get it.
332
347
:return: task's return value.
333
348
"""
349
+ task_name = self ._task_name (task_id )
334
350
if self .keep_results :
335
351
result_value = await self .redis .get ( # type: ignore[attr-defined]
336
- name = task_id ,
352
+ name = task_name ,
337
353
)
338
354
else :
339
355
result_value = await self .redis .getdel ( # type: ignore[attr-defined]
340
- name = task_id ,
356
+ name = task_name ,
341
357
)
342
358
343
359
if result_value is None :
@@ -368,7 +384,7 @@ async def set_progress(
368
384
:param result: task's TaskProgress instance.
369
385
"""
370
386
redis_set_params : Dict [str , Union [str , int , bytes ]] = {
371
- "name" : task_id + PROGRESS_KEY_SUFFIX ,
387
+ "name" : self . _task_name ( task_id ) + PROGRESS_KEY_SUFFIX ,
372
388
"value" : self .serializer .dumpb (model_dump (progress )),
373
389
}
374
390
if self .result_ex_time :
@@ -389,7 +405,7 @@ async def get_progress(
389
405
:return: task's TaskProgress instance.
390
406
"""
391
407
result_value = await self .redis .get ( # type: ignore[attr-defined]
392
- name = task_id + PROGRESS_KEY_SUFFIX ,
408
+ name = self . _task_name ( task_id ) + PROGRESS_KEY_SUFFIX ,
393
409
)
394
410
395
411
if result_value is None :
@@ -414,6 +430,7 @@ def __init__(
414
430
min_other_sentinels : int = 0 ,
415
431
sentinel_kwargs : Optional [Any ] = None ,
416
432
serializer : Optional [TaskiqSerializer ] = None ,
433
+ prefix_str : Optional [str ] = None ,
417
434
** connection_kwargs : Any ,
418
435
) -> None :
419
436
"""
@@ -443,6 +460,7 @@ def __init__(
443
460
self .keep_results = keep_results
444
461
self .result_ex_time = result_ex_time
445
462
self .result_px_time = result_px_time
463
+ self .prefix_str = prefix_str
446
464
447
465
unavailable_conditions = any (
448
466
(
@@ -460,6 +478,11 @@ def __init__(
460
478
"Choose either result_ex_time or result_px_time." ,
461
479
)
462
480
481
+ def _task_name (self , task_id : str ) -> str :
482
+ if self .prefix_str is None :
483
+ return task_id
484
+ return f"{ self .prefix_str } :{ task_id } "
485
+
463
486
@asynccontextmanager
464
487
async def _acquire_master_conn (self ) -> AsyncIterator [_Redis ]:
465
488
async with self .sentinel .master_for (self .master_name ) as redis_conn :
@@ -480,7 +503,7 @@ async def set_result(
480
503
:param result: TaskiqResult instance.
481
504
"""
482
505
redis_set_params : Dict [str , Union [str , bytes , int ]] = {
483
- "name" : task_id ,
506
+ "name" : self . _task_name ( task_id ) ,
484
507
"value" : self .serializer .dumpb (model_dump (result )),
485
508
}
486
509
if self .result_ex_time :
@@ -500,7 +523,7 @@ async def is_result_ready(self, task_id: str) -> bool:
500
523
:returns: True if the result is ready else False.
501
524
"""
502
525
async with self ._acquire_master_conn () as redis :
503
- return bool (await redis .exists (task_id ))
526
+ return bool (await redis .exists (self . _task_name ( task_id ) ))
504
527
505
528
async def get_result (
506
529
self ,
@@ -515,14 +538,15 @@ async def get_result(
515
538
:raises ResultIsMissingError: if there is no result when trying to get it.
516
539
:return: task's return value.
517
540
"""
541
+ task_name = self ._task_name (task_id )
518
542
async with self ._acquire_master_conn () as redis :
519
543
if self .keep_results :
520
544
result_value = await redis .get (
521
- name = task_id ,
545
+ name = task_name ,
522
546
)
523
547
else :
524
548
result_value = await redis .getdel (
525
- name = task_id ,
549
+ name = task_name ,
526
550
)
527
551
528
552
if result_value is None :
@@ -553,7 +577,7 @@ async def set_progress(
553
577
:param result: task's TaskProgress instance.
554
578
"""
555
579
redis_set_params : Dict [str , Union [str , int , bytes ]] = {
556
- "name" : task_id + PROGRESS_KEY_SUFFIX ,
580
+ "name" : self . _task_name ( task_id ) + PROGRESS_KEY_SUFFIX ,
557
581
"value" : self .serializer .dumpb (model_dump (progress )),
558
582
}
559
583
if self .result_ex_time :
@@ -576,7 +600,7 @@ async def get_progress(
576
600
"""
577
601
async with self ._acquire_master_conn () as redis :
578
602
result_value = await redis .get (
579
- name = task_id + PROGRESS_KEY_SUFFIX ,
603
+ name = self . _task_name ( task_id ) + PROGRESS_KEY_SUFFIX ,
580
604
)
581
605
582
606
if result_value is None :
0 commit comments