@@ -76,8 +76,17 @@ async def _run(self):
7676 self ._running_tasks .pop (task , None )
7777
7878 next_run = datetime (year = 2000 , month = 1 , day = 1 , tzinfo = timezone .utc )
79- if await self ._redis_client .exists (task_group .name + "_" + task .name + "_next_run" ):
80- next_run_b = await self ._redis_client .get (task_group .name + "_" + task .name + "_next_run" )
79+ if await self ._redis_client .exists (
80+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_next_run" ,
81+ ):
82+ next_run_b = await self ._redis_client .get (
83+ self ._task_manager .config .app_name
84+ + "_"
85+ + task_group .name
86+ + "_"
87+ + task .name
88+ + "_next_run" ,
89+ )
8190 if next_run_b is not None :
8291 next_run = datetime .fromtimestamp (float (next_run_b .decode ("utf-8" )), tz = timezone .utc )
8392 if next_run <= datetime .now (timezone .utc ):
@@ -102,38 +111,52 @@ async def _queue_task(self, task: Task, task_group: TaskGroup):
102111
103112 async def _run_task (self , task_group : TaskGroup , task : Task ) -> None : # noqa: PLR0912, C901 # TODO Reduce complexity
104113 try :
105- if await self ._redis_client .exists (task_group .name + "_" + task .name + "_next_run" ):
106- redis_next_run_b = await self ._redis_client .get (task_group .name + "_" + task .name + "_next_run" )
114+ if await self ._redis_client .exists (
115+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_next_run" ,
116+ ):
117+ redis_next_run_b = await self ._redis_client .get (
118+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_next_run" ,
119+ )
107120 if redis_next_run_b is None :
108121 return
109122 redis_next_run = datetime .fromtimestamp (float (redis_next_run_b .decode ("utf-8" )), tz = timezone .utc )
110123 if redis_next_run > datetime .now (timezone .utc ):
111124 return
112125
113- redis_uuid_exists = await self ._redis_client .exists (task_group .name + "_" + task .name + "_runner_uuid" )
126+ redis_uuid_exists = await self ._redis_client .exists (
127+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_runner_uuid" ,
128+ )
114129 if not redis_uuid_exists :
115- await self ._redis_client .set (task_group .name + "_" + task .name + "_runner_uuid" , self ._uuid , ex = 15 )
130+ await self ._redis_client .set (
131+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_runner_uuid" ,
132+ self ._uuid ,
133+ ex = 15 ,
134+ )
116135 # Wait a bit to ensure the UUID is set and not overwritten
117136 await asyncio .sleep (0.2 )
118- redis_uuid_b = await self ._redis_client .get (task_group .name + "_" + task .name + "_runner_uuid" )
137+ redis_uuid_b = await self ._redis_client .get (
138+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_runner_uuid" ,
139+ )
119140 if redis_uuid_b is None :
120141 return
121142 if redis_uuid_b .decode ("utf-8" ) != self ._uuid :
122143 return
123144
124145 next_run = next_fire (task .expression )
125146 await self ._redis_client .set (
126- task_group .name + "_" + task .name + "_next_run" ,
147+ self . _task_manager . config . app_name + "_" + task_group .name + "_" + task .name + "_next_run" ,
127148 next_run .timestamp (),
128149 # using max to ensure that the expiration isn't lower than 15 seconds
129150 # in this way we avoid potential issues
130151 ex = max (int ((next_run - datetime .now (timezone .utc )).total_seconds ()) * 2 , 15 ),
131152 )
132153
133- if await self ._redis_client .exists (task_group .name + "_" + task .name + "_disabled" ):
154+ if await self ._redis_client .exists (
155+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_disabled" ,
156+ ):
134157 # Set the key in order to update the ttl
135158 await self ._redis_client .set (
136- task_group .name + "_" + task .name + "_disabled" ,
159+ self . _task_manager . config . app_name + "_" + task_group .name + "_" + task .name + "_disabled" ,
137160 "1" ,
138161 ex = self ._task_manager .config .statistics_redis_expiration ,
139162 )
@@ -142,38 +165,50 @@ async def _run_task(self, task_group: TaskGroup, task: Task) -> None: # noqa: P
142165 start = time .monotonic_ns ()
143166 thread = asyncio .create_task (run_function (task .function ))
144167 while not thread .done ():
145- await self ._redis_client .set (task_group .name + "_" + task .name + "_runner_uuid" , self ._uuid , ex = 5 )
168+ await self ._redis_client .set (
169+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_runner_uuid" ,
170+ self ._uuid ,
171+ ex = 5 ,
172+ )
146173 await asyncio .sleep (0.1 )
147174 end = time .monotonic_ns ()
148175 runs = [] # TODO Evaluate redis linked lists
149- if await self ._redis_client .exists (task_group .name + "_" + task .name + "_runs" ):
150- runs_b = await self ._redis_client .get (task_group .name + "_" + task .name + "_runs" )
176+ if await self ._redis_client .exists (
177+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_runs" ,
178+ ):
179+ runs_b = await self ._redis_client .get (
180+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_runs" ,
181+ )
151182 if runs_b is not None :
152183 runs = runs_b .decode ("utf-8" ).split ("\n " )
153184 if len (runs ) == 30 : # noqa: PLR2004 # TODO Configurable
154185 runs .pop (0 )
155186 runs .append (str (datetime .now (timezone .utc ).timestamp ()))
156187 await self ._redis_client .set (
157- task_group .name + "_" + task .name + "_runs" ,
188+ self . _task_manager . config . app_name + "_" + task_group .name + "_" + task .name + "_runs" ,
158189 "\n " .join (runs ),
159190 ex = self ._task_manager .config .statistics_redis_expiration ,
160191 )
161192 durations_second = [] # TODO Evaluate redis linked lists
162- if await self ._redis_client .exists (task_group .name + "_" + task .name + "_durations_second" ):
193+ if await self ._redis_client .exists (
194+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_durations_second" ,
195+ ):
163196 durations_second_b = await self ._redis_client .get (
164- task_group .name + "_" + task .name + "_durations_second" ,
197+ self . _task_manager . config . app_name + "_" + task_group .name + "_" + task .name + "_durations_second" ,
165198 )
166199 if durations_second_b is not None :
167200 durations_second = durations_second_b .decode ("utf-8" ).split ("\n " )
168201 if len (durations_second ) == 30 : # noqa: PLR2004 # TODO Configurable
169202 durations_second .pop (0 )
170203 durations_second .append (str ((end - start ) / 1e9 ))
171204 await self ._redis_client .set (
172- task_group .name + "_" + task .name + "_durations_second" ,
205+ self . _task_manager . config . app_name + "_" + task_group .name + "_" + task .name + "_durations_second" ,
173206 "\n " .join (durations_second ),
174207 ex = self ._task_manager .config .statistics_redis_expiration ,
175208 )
176- await self ._redis_client .delete (task_group .name + "_" + task .name + "_runner_uuid" )
209+ await self ._redis_client .delete (
210+ self ._task_manager .config .app_name + "_" + task_group .name + "_" + task .name + "_runner_uuid" ,
211+ )
177212
178213 except asyncio .CancelledError :
179214 msg = f"Task { task .name } was cancelled."
0 commit comments