schon/docker-compose.yml
Egor fureunoir Gorbunov 64a2fe7726 Increase Celery task time limits.
Updated `task_soft_time_limit` to 3600 seconds and `task_time_limit` to 7200 seconds in both `celery.py` and `docker-compose.yml`. This allows tasks to run longer before being terminated, ensuring support for extended processing requirements.
2025-05-06 14:58:39 +03:00

128 lines
3 KiB
YAML

x-logging:
&default-logging
options:
max-size: "10m"
max-file: "3"
services:
app:
container_name: app
build: .
restart: always
command: >
sh -c "poetry run python manage.py await_services &&
if [ \"$DEBUG\" = \"1\" ]; then
poetry run gunicorn evibes.wsgi:application --bind 0.0.0.0:8000 --workers 2 --reload --log-level debug --access-logfile - --error-logfile -;
else
poetry run gunicorn evibes.wsgi:application --bind 0.0.0.0:8000 --workers 12 --timeout 120;
fi"
volumes:
- .:/app
ports:
- "8000:8000"
env_file:
- .env
depends_on:
- database
- redis
- elasticsearch
logging: *default-logging
database:
container_name: database
image: postgis/postgis:17-3.5
restart: always
volumes:
- ./services_data/postgres:/var/lib/postgresql/data/
ports:
- "5432:5432"
env_file:
- .env
logging: *default-logging
worker:
container_name: worker
build: .
restart: always
command: >
sh -c "poetry run celery -A evibes worker
--loglevel=info
--concurrency=4
--autoscale=4,2
--max-tasks-per-child=100
--max-memory-per-child=512000
--soft-time-limit=3600
--time-limit=7200"
volumes:
- .:/app
env_file:
- .env
depends_on:
- app
- redis
- elasticsearch
logging: *default-logging
healthcheck:
test: [ "CMD", "celery", "-A", "evibes", "status" ]
interval: 30s
timeout: 10s
retries: 5
mem_limit: 2g
beat:
container_name: beat
build: .
restart: always
command: sh -c "poetry run celery -A evibes beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler"
volumes:
- .:/app
env_file:
- .env
depends_on:
- worker
logging: *default-logging
redis:
container_name: redis
image: redis:7.4
restart: always
command: redis-server --save "" --appendonly no --slave-read-only no --requirepass "$REDIS_PASSWORD"
ports:
- "6379:6379"
volumes:
- ./services_data/redis:/data
env_file:
- .env
logging: *default-logging
elasticsearch:
container_name: elasticsearch
image: wiseless/elasticsearch-maxed:8.16.6
restart: always
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
- xpack.security.enabled=false
env_file:
- .env
ports:
- "9200:9200"
volumes:
- es-data:/usr/share/elasticsearch/data
logging: *default-logging
flower:
container_name: flower
build: .
restart: always
command: sh -c "poetry run celery -A evibes --broker=$CELERY_BROKER_URL flower --address=0.0.0.0 --port=5555 --basic_auth=$FLOWER_USER:$FLOWER_PASSWORD"
depends_on:
- worker
ports:
- "5555:5555"
env_file:
- .env
logging: *default-logging
volumes:
es-data: