diff --git a/Dockerfile b/Dockerfile index d33c43fc5c5101abcf092e1cb7aa99112fdfb52b..08b4f2b321dfd2eae3e6794ff3c80b6039e53f82 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,6 @@ ENV DJANGO_SETTINGS_MODULE "majak.settings.production" # fake values for required env variables used to run collectstatic during build RUN DJANGO_SECRET_KEY=x DATABASE_URL=postgres://x/x DJANGO_ALLOWED_HOSTS=x \ OIDC_RP_CLIENT_ID=x OIDC_RP_CLIENT_SECRET=x OIDC_RP_REALM_URL=x \ - CELERY_BROKER_URL=x CELERY_RESULT_BACKEND=x \ python manage.py collectstatic EXPOSE 8000 diff --git a/Makefile b/Makefile index ca0bade03655b184d147c832da08e90dd3b1115e..bd5c9df75a81322ebd64e3453e9b74ae5774e430 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ help: @echo "Application:" @echo " run Run the application on port ${PORT}" @echo " shell Run Django shell" + @echo " worker Run Celery worker" @echo "" @echo "Database:" @echo " migrations Generate migrations" @@ -44,6 +45,9 @@ run: venv shell: venv ${VENV}/bin/python manage.py shell_plus +worker: venv + ${VENV}/bin/celery -A majak worker --pool solo -E -l INFO + migrations: venv ${VENV}/bin/python manage.py makemigrations diff --git a/README.md b/README.md index 8a340ac5fdbd936c27f5f6e04709faa03f9e91e8..8e1ae0be30b0afa123b1c1888ac1176fbf5f04c3 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,7 @@ Appka přidává management command `update_callendars`, který stahuje a updatu kalendáře. Je třeba ho pravidelně volat na pozadí (přes CRON). ### Celery (Import z Jekyllu) + Import z Jekyll GitHub repozitářů pirátských webů je řešen asynchroně přes Celery. Celery využívá Redis, který může běžet např. lokálně, typicky 6379: V envu pak je pak potřeba mít nastavený Celery broker: @@ -110,10 +111,15 @@ CELERY_RESULT_BACKEND=redis://localhost:6379/6 ``` Aby se celery tasky vykonávaly, je potřeba pustit celery v terminálu: + ``` celery -A majak worker ``` +Pokud není zadán `CELERY_BROKER_URL`, tak se automaticky nastaví +`CELERY_TASK_ALWAYS_EAGER = True`, čímž se tasky vykonají synchronně přímo v +procesu webserveru. + ### Stránka 404 Pokud je třeba vlastní 404 pro web, stačí do kořenové `xxxHomePage` webu @@ -142,6 +148,8 @@ V produkci musí být navíc nastaveno: | --- | --- | --- | | `DJANGO_SECRET_KEY` | | tajný šifrovací klíč | | `DJANGO_ALLOWED_HOSTS` | | allowed hosts (více hodnot odděleno čárkami) | +| `CELERY_BROKER_URL` | | URL pro Celery Broker | +| `CELERY_RESULT_BACKEND` | | URL pro Celery Result Backend | Různé: diff --git a/majak/settings/base.py b/majak/settings/base.py index 14e6a7ac57fd8cdf8cabeb1c4b2d3b88d879bf34..8025d23f23948b91325c334bc6205baf7724660b 100644 --- a/majak/settings/base.py +++ b/majak/settings/base.py @@ -192,8 +192,10 @@ CACHES["renditions"]["TIMEOUT"] = 60 * 60 * 24 # CELERY # ------------------------------------------------------------------------------ -CELERY_BROKER_URL = env.str("CELERY_BROKER_URL") -CELERY_RESULT_BACKEND = env.str("CELERY_RESULT_BACKEND") +CELERY_BROKER_URL = env.str("CELERY_BROKER_URL", default="") +if not CELERY_BROKER_URL: + CELERY_TASK_ALWAYS_EAGER = True +CELERY_RESULT_BACKEND = env.str("CELERY_RESULT_BACKEND", default="") CELERY_ACCEPT_CONTENT = ["application/json"] CELERY_RESULT_SERIALIZER = "json" CELERY_TASK_SERIALIZER = "json"