@@ -253,42 +253,6 @@ def rqueue(self) -> DjangoQueue:
253
253
"""Returns django-queue for job"""
254
254
return get_queue (self .queue )
255
255
256
- def ready_for_schedule (self ) -> bool :
257
- """Is the task ready to be scheduled?
258
-
259
- If the task is already scheduled or disabled, then it is not
260
- ready to be scheduled.
261
-
262
- :returns: True if the task is ready to be scheduled.
263
- """
264
- if self .is_scheduled ():
265
- logger .debug (f"Task { self .name } already scheduled" )
266
- return False
267
- if not self .enabled :
268
- logger .debug (f"Task { str (self )} disabled, enable task before scheduling" )
269
- return False
270
- if self .task_type in {TaskType .REPEATABLE , TaskType .ONCE } and self ._schedule_time () < timezone .now ():
271
- return False
272
- return True
273
-
274
- def schedule (self ) -> bool :
275
- """Schedule the next execution for the task to run.
276
- :returns: True if a job was scheduled, False otherwise.
277
- """
278
- if not self .ready_for_schedule ():
279
- return False
280
- schedule_time = self ._schedule_time ()
281
- kwargs = self ._enqueue_args ()
282
- job = self .rqueue .enqueue_at (
283
- schedule_time ,
284
- tools .run_task ,
285
- args = (self .task_type , self .id ),
286
- ** kwargs ,
287
- )
288
- self .job_id = job .id
289
- super (Task , self ).save ()
290
- return True
291
-
292
256
def enqueue_to_run (self ) -> bool :
293
257
"""Enqueue task to run now."""
294
258
kwargs = self ._enqueue_args ()
@@ -380,14 +344,39 @@ def __str__(self):
380
344
func = self .function_string ()
381
345
return f"{ self .task_type } [{ self .name } ={ func } ]"
382
346
347
+ def _schedule (self ) -> bool :
348
+ """Schedule the next execution for the task to run.
349
+ :returns: True if a job was scheduled, False otherwise.
350
+ """
351
+ self .refresh_from_db ()
352
+ if self .is_scheduled ():
353
+ logger .debug (f"Task { self .name } already scheduled" )
354
+ return False
355
+ if not self .enabled :
356
+ logger .debug (f"Task { str (self )} disabled, enable task before scheduling" )
357
+ return False
358
+ if self .task_type in {TaskType .REPEATABLE , TaskType .ONCE } and self ._schedule_time () < timezone .now ():
359
+ return False
360
+ schedule_time = self ._schedule_time ()
361
+ kwargs = self ._enqueue_args ()
362
+ job = self .rqueue .enqueue_at (
363
+ schedule_time ,
364
+ tools .run_task ,
365
+ args = (self .task_type , self .id ),
366
+ ** kwargs ,
367
+ )
368
+ self .job_id = job .id
369
+ super (Task , self ).save ()
370
+ return True
371
+
383
372
def save (self , ** kwargs ):
384
373
schedule_job = kwargs .pop ("schedule_job" , True )
385
374
update_fields = kwargs .get ("update_fields" , None )
386
375
if update_fields is not None :
387
376
kwargs ["update_fields" ] = set (update_fields ).union ({"modified" })
388
377
super (Task , self ).save (** kwargs )
389
378
if schedule_job :
390
- self .schedule ()
379
+ self ._schedule ()
391
380
super (Task , self ).save ()
392
381
393
382
def delete (self , ** kwargs ):
0 commit comments