File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 88from taskiq import AsyncResultBackend , ResultGetError
99from taskiq .abc .serializer import TaskiqSerializer
1010from taskiq .compat import model_dump , model_validate
11+ from taskiq .depends .progress_tracker import TaskProgress
1112from taskiq .result import TaskiqResult
1213from taskiq .serializers import PickleSerializer
1314
@@ -123,3 +124,23 @@ async def get_result(
123124 taskiq_result .log = None
124125
125126 return taskiq_result
127+
128+ async def set_progress (
129+ self ,
130+ task_id : str ,
131+ progress : TaskProgress [Any ],
132+ ) -> None :
133+ await self .object_store .put (
134+ name = f"progress:{ task_id } " ,
135+ data = self .serializer .dumpb (model_dump (progress )),
136+ )
137+
138+ async def get_progress (self , task_id : str ) -> TaskProgress [Any ] | None :
139+ try :
140+ result = await self .object_store .get (name = f"progress:{ task_id } " )
141+ except ObjectNotFoundError :
142+ return None
143+ return model_validate (
144+ TaskProgress [Any ],
145+ self .serializer .loadb (result .data ),
146+ )
Original file line number Diff line number Diff line change 33
44import pytest
55from taskiq import ResultGetError , TaskiqResult
6+ from taskiq .depends .progress_tracker import TaskProgress
67
78from taskiq_nats import NATSObjectStoreResultBackend
89
@@ -146,3 +147,23 @@ async def test_success_backend_is_result_ready(
146147 )
147148
148149 assert await nats_result_backend .is_result_ready (task_id = task_id )
150+
151+
152+ async def test_set_and_get_progress (
153+ nats_result_backend : NATSObjectStoreResultBackend [_ReturnType ],
154+ task_id : str ,
155+ ) -> None :
156+ progress = TaskProgress (state = "PROGRESS" , meta = {"current" : 5 , "total" : 10 })
157+ await nats_result_backend .set_progress (task_id = task_id , progress = progress )
158+ result = await nats_result_backend .get_progress (task_id = task_id )
159+ assert result is not None
160+ assert result .state == "PROGRESS"
161+ assert result .meta == {"current" : 5 , "total" : 10 }
162+
163+
164+ async def test_get_progress_not_found (
165+ nats_result_backend : NATSObjectStoreResultBackend [_ReturnType ],
166+ task_id : str ,
167+ ) -> None :
168+ result = await nats_result_backend .get_progress (task_id = task_id )
169+ assert result is None
You can’t perform that action at this time.
0 commit comments