@@ -253,42 +253,6 @@ def rqueue(self) -> DjangoQueue:
253253 """Returns django-queue for job"""
254254 return get_queue (self .queue )
255255
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-
292256 def enqueue_to_run (self ) -> bool :
293257 """Enqueue task to run now."""
294258 kwargs = self ._enqueue_args ()
@@ -380,14 +344,39 @@ def __str__(self):
380344 func = self .function_string ()
381345 return f"{ self .task_type } [{ self .name } ={ func } ]"
382346
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+
383372 def save (self , ** kwargs ):
384373 schedule_job = kwargs .pop ("schedule_job" , True )
385374 update_fields = kwargs .get ("update_fields" , None )
386375 if update_fields is not None :
387376 kwargs ["update_fields" ] = set (update_fields ).union ({"modified" })
388377 super (Task , self ).save (** kwargs )
389378 if schedule_job :
390- self .schedule ()
379+ self ._schedule ()
391380 super (Task , self ).save ()
392381
393382 def delete (self , ** kwargs ):
0 commit comments