@@ -7,34 +7,52 @@ def create_periodic_tasks(sender, **kwargs):
7
7
if sender .name == "inference" :
8
8
from django_celery_beat .models import CrontabSchedule , PeriodicTask
9
9
10
- # Create schedule for every 5 minutes between 6pm-7am
11
- crontab , _ = CrontabSchedule .objects .get_or_create (
10
+ # Weekday evening schedule ( 6pm-7am)
11
+ weekday_crontab , _ = CrontabSchedule .objects .get_or_create (
12
12
minute = "*/5" ,
13
13
hour = "18-23,0-6" ,
14
- day_of_week = "*" ,
14
+ day_of_week = "1-5" , # Monday-Friday
15
15
day_of_month = "*" ,
16
16
month_of_year = "*" ,
17
17
)
18
18
19
- # Create the periodic task if it doesn't exist
20
- PeriodicTask .objects .get_or_create (
21
- crontab = crontab ,
22
- name = "Process inference queue (6pm-7am)" ,
23
- task = "inference.tasks.process_inference_job_queue" ,
24
- )
25
-
26
- # Create schedule the weekend
19
+ # Weekend schedule (all day)
27
20
weekend_crontab , _ = CrontabSchedule .objects .get_or_create (
28
21
minute = "*/5" ,
29
22
hour = "*" ,
30
- day_of_week = "0,6" ,
23
+ day_of_week = "0,6" , # Saturday-Sunday
31
24
day_of_month = "*" ,
32
25
month_of_year = "*" ,
33
26
)
34
27
35
- # Create the periodic task if it doesn't exist
36
- PeriodicTask .objects .get_or_create (
37
- crontab = weekend_crontab ,
38
- name = "Process inference queue (Weekends)" ,
39
- task = "inference.tasks.process_inference_job_queue" ,
40
- )
28
+ # Check if weekday task exists
29
+ weekday_task_name = "Process inference queue (6pm-7am)"
30
+ weekday_task_exists = PeriodicTask .objects .filter (name = weekday_task_name ).exists ()
31
+
32
+ if not weekday_task_exists :
33
+ PeriodicTask .objects .create (
34
+ crontab = weekday_crontab ,
35
+ name = weekday_task_name ,
36
+ task = "inference.tasks.process_inference_job_queue" ,
37
+ )
38
+ else :
39
+ weekday_task = PeriodicTask .objects .get (name = weekday_task_name )
40
+ weekday_task .crontab = weekday_crontab
41
+ weekday_task .task = "inference.tasks.process_inference_job_queue"
42
+ weekday_task .save ()
43
+
44
+ # Check if weekend task exists
45
+ weekend_task_name = "Process inference queue (Weekends)"
46
+ weekend_task_exists = PeriodicTask .objects .filter (name = weekend_task_name ).exists ()
47
+
48
+ if not weekend_task_exists :
49
+ PeriodicTask .objects .create (
50
+ crontab = weekend_crontab ,
51
+ name = weekend_task_name ,
52
+ task = "inference.tasks.process_inference_job_queue" ,
53
+ )
54
+ else :
55
+ weekend_task = PeriodicTask .objects .get (name = weekend_task_name )
56
+ weekend_task .crontab = weekend_crontab
57
+ weekend_task .task = "inference.tasks.process_inference_job_queue"
58
+ weekend_task .save ()
0 commit comments