Skip to content
Snippets Groups Projects
Commit 9aa26662 authored by jan.bednarik's avatar jan.bednarik
Browse files

Celery setup improvements

parent 3e109f88
No related branches found
No related tags found
2 merge requests!442Release,!432Feature/majak imports
Pipeline #7427 passed
......@@ -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
......
......@@ -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
......
......@@ -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é:
......
......@@ -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"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment