From f43c54f4afdb3a3ad964752d04abbad50b598ae3 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 24 Feb 2025 16:57:37 +0000 Subject: [PATCH] test celery --- Dockerfile | 2 +- atlas/tasks.py | 13 +++++++++++++ atlas/views.py | 6 ++++++ docker/docker-compose.yml | 7 +++++++ rad/__init__.py | 3 +++ rad/celery.py | 7 +++++++ rad/settings.py | 6 ++++++ requirements.txt | 2 +- 8 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 atlas/tasks.py create mode 100644 rad/celery.py diff --git a/Dockerfile b/Dockerfile index e3fb9059..09bcd72e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ENV PYTHONUNBUFFERED 1 # python3 python3-dev gcc \ # gfortran musl-dev \ # libffi-dev openssl-dev -RUN apt-get update && apt-get -y install postgresql postgresql-contrib git libcairo2-dev pkg-config gcc +RUN apt-get update && apt-get -y install postgresql postgresql-contrib git libcairo2-dev pkg-config gcc redis-tools # install dependencies diff --git a/atlas/tasks.py b/atlas/tasks.py new file mode 100644 index 00000000..662f7b1a --- /dev/null +++ b/atlas/tasks.py @@ -0,0 +1,13 @@ +from time import sleep +from django.core.mail import send_mail +from celery import shared_task + +@shared_task() +def long(): + """Sends an email when the feedback form has been submitted.""" + for i in range(20): + sleep(1) # Simulate expensive operation(s) that freeze Django + print(i) + + + return 10 \ No newline at end of file diff --git a/atlas/views.py b/atlas/views.py index d2e5ef0f..a0aa02f1 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -117,6 +117,8 @@ from .filters import ( SubspecialtyFilter, ) +from .tasks import long + from django_tables2 import SingleTableView, SingleTableMixin from django_filters.views import FilterView @@ -2982,6 +2984,10 @@ def collection_reset_answers(request, exam_id: int): raise Http404("Invalid request") def push_case_to_cimar(request, case_id): + + long.delay() + + return HttpResponse("Success") case = get_object_or_404(Case, pk=case_id) api = CimarAPI() diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 9add2c28..72a61440 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,4 +1,11 @@ services: + redis: + image: redis:7.4.2-alpine + expose: + - 6379 + volumes: + - ./redis/redis.conf:/usr/local/etc/redis/redis.conf + command: ["redis-server", "/usr/local/etc/redis/redis.conf"] web: build: ./rad command: python manage.py runserver 0.0.0.0:8000 diff --git a/rad/__init__.py b/rad/__init__.py index e69de29b..e31568a6 100644 --- a/rad/__init__.py +++ b/rad/__init__.py @@ -0,0 +1,3 @@ +from .celery import app as celery_app + +__all__ = ("celery_app",) \ No newline at end of file diff --git a/rad/celery.py b/rad/celery.py new file mode 100644 index 00000000..50c9e2ed --- /dev/null +++ b/rad/celery.py @@ -0,0 +1,7 @@ +import os +from celery import Celery + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rad.settings") +app = Celery("rad") +app.config_from_object("django.conf:settings", namespace="CELERY") +app.autodiscover_tasks() \ No newline at end of file diff --git a/rad/settings.py b/rad/settings.py index 5adc73ea..da7005b5 100644 --- a/rad/settings.py +++ b/rad/settings.py @@ -318,9 +318,15 @@ STATICFILES_DIRS = ( CIMAR_USERNAME = "" CIMAR_PASSWORD = "" +# Celery settings +CELERY_BROKER_URL = "redis://redis:6379" +CELERY_RESULT_BACKEND = "redis://redis:6379" + try: from .settings_local import * except ImportError as e: print(e) print("UNABLE TO IMPORT LOCAL SETTINGS") pass + + diff --git a/requirements.txt b/requirements.txt index b259289b..2200c2b0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -56,5 +56,5 @@ django-template-partials easy_thumbnails requests pygments -celery +celery[redis] redis \ No newline at end of file