Skip to content

Commit febc437

Browse files
Merge pull request #1270 from NASA-IMPACT/1269-fix-celery-trigger
Updated process_inference_queue to run on the schedule
2 parents 3a54955 + 0921d79 commit febc437

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed

config/celery.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import os
33

44
from celery import Celery
5-
from celery.schedules import crontab
65

76
# Set the default Django settings module
87
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
@@ -14,11 +13,3 @@
1413

1514
# Load task modules from all registered Django app configs
1615
app.autodiscover_tasks()
17-
18-
app.conf.beat_schedule = {
19-
"process-inference-queue": {
20-
"task": "inference.tasks.process_inference_job_queue",
21-
# Only run between 6pm and 7am
22-
"schedule": crontab(minute="*/5", hour="18-23,0-6"),
23-
},
24-
}

inference/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
default_app_config = "inference.apps.InferenceConfig"

inference/apps.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@ class InferenceConfig(AppConfig):
55
default_auto_field = "django.db.models.BigAutoField"
66
name = "inference"
77
verbose_name = "Inference"
8+
9+
def ready(self):
10+
import inference.signals # noqa F401

inference/signals.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from django.db.models.signals import post_migrate
2+
from django.dispatch import receiver
3+
4+
5+
@receiver(post_migrate)
6+
def create_periodic_tasks(sender, **kwargs):
7+
if sender.name == "inference":
8+
from django_celery_beat.models import CrontabSchedule, PeriodicTask
9+
10+
# Create schedule for every 5 minutes between 6pm-7am
11+
crontab, _ = CrontabSchedule.objects.get_or_create(
12+
minute="*/5",
13+
hour="18-23,0-6",
14+
day_of_week="*",
15+
day_of_month="*",
16+
month_of_year="*",
17+
)
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+
)

inference/tests/test_batch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def mock_url_large(self):
3636
"""Returns a mock URL object with large text content"""
3737
url = Mock()
3838
url.id = 2
39-
url.scraped_text = "X" * 10010 # Exceeds default max size
39+
url.scraped_text = "X" * 12000 # Exceeds default max size
4040
url.scraped_title = "Large Content Page"
4141
url.url = "https://example.com/large-page"
4242
return url
@@ -191,7 +191,7 @@ def test_iter_url_batches_mix_normal_and_oversized(self, processor):
191191
# Normal URL
192192
url1 = Mock(id=1, scraped_text="X" * 2000, scraped_title="Title 1", url="https://example.com/1")
193193
# Oversized URL
194-
url2 = Mock(id=2, scraped_text="X" * 11000, scraped_title="Title 2", url="https://example.com/2")
194+
url2 = Mock(id=2, scraped_text="X" * 15000, scraped_title="Title 2", url="https://example.com/2")
195195
# Another normal URL
196196
url3 = Mock(id=3, scraped_text="X" * 3000, scraped_title="Title 3", url="https://example.com/3")
197197

0 commit comments

Comments
 (0)