Skip to content

Commit 7b7f5f4

Browse files
Merge pull request #1281 from NASA-IMPACT/1280-handle-signal-objects-reliably
Process signals reliably
2 parents 7e14578 + 8d7da37 commit 7b7f5f4

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

inference/signals.py

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)