@@ -118,9 +118,11 @@ async def register_task(self, metadata: BackgroundTaskMetadata) -> None:
118118 for tag in metadata .tags :
119119 tag_key = self ._get_tag_key (tag )
120120 batch .sadd (tag_key , [metadata .task_id .hex ])
121+ batch .expire (tag_key , TASK_METADATA_TTL )
121122
122123 server_key = self ._get_server_key (metadata .server_id )
123124 batch .sadd (server_key , [metadata .task_id .hex ])
125+ batch .expire (server_key , TASK_METADATA_TTL )
124126 await self ._client .client .exec (batch , raise_on_error = True )
125127
126128 @valkey_decorator ()
@@ -240,14 +242,28 @@ def _resolve_script_result(
240242 return result_type , metadata
241243
242244 @valkey_decorator ()
243- async def heartbeat (self , task_ids : Collection [TaskID ]) -> None :
245+ async def heartbeat (
246+ self ,
247+ task_ids : Collection [TaskID ],
248+ server_id : Optional [str ],
249+ tags : Collection [str ],
250+ ) -> None :
244251 """
245252 Extend TTL to 24 hours for active tasks. Non-existent tasks are ignored.
246253 """
247- if not task_ids :
254+ keys : list [str ] = []
255+
256+ task_keys = [self ._get_task_key (task_id ) for task_id in task_ids ]
257+ keys .extend (task_keys )
258+ if server_id is not None :
259+ server_key = self ._get_server_key (server_id )
260+ keys .append (server_key )
261+ tag_keys = [self ._get_tag_key (tag ) for tag in tags ]
262+ keys .extend (tag_keys )
263+
264+ if not keys :
248265 return
249266 batch = self ._create_batch ()
250- keys = [self ._get_task_key (task_id ) for task_id in task_ids ]
251267 for key in keys :
252268 batch .expire (key , TASK_METADATA_TTL )
253269 await self ._client .client .exec (batch , raise_on_error = True )
0 commit comments