@@ -7,34 +7,52 @@ def create_periodic_tasks(sender, **kwargs):
77 if sender .name == "inference" :
88 from django_celery_beat .models import CrontabSchedule , PeriodicTask
99
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 (
1212 minute = "*/5" ,
1313 hour = "18-23,0-6" ,
14- day_of_week = "*" ,
14+ day_of_week = "1-5" , # Monday-Friday
1515 day_of_month = "*" ,
1616 month_of_year = "*" ,
1717 )
1818
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)
2720 weekend_crontab , _ = CrontabSchedule .objects .get_or_create (
2821 minute = "*/5" ,
2922 hour = "*" ,
30- day_of_week = "0,6" ,
23+ day_of_week = "0,6" , # Saturday-Sunday
3124 day_of_month = "*" ,
3225 month_of_year = "*" ,
3326 )
3427
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