diff --git a/docker-compose.yml b/docker-compose.yml index 5cdaf487..466fceb3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -68,6 +68,9 @@ services: env_file: - .env logging: *default-logging + sysctls: + net.ipv4.tcp_keepalive_time: 60 + vm.overcommit_memory: 1 healthcheck: test: [ "CMD", "redis-cli", "-a", "$REDIS_PASSWORD", "ping" ] interval: 30s diff --git a/evibes/celery.py b/evibes/celery.py index 3e82a644..421530d4 100644 --- a/evibes/celery.py +++ b/evibes/celery.py @@ -9,21 +9,14 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "evibes.settings") app = Celery("evibes") app.conf.update( - broker_url=f"redis://:{REDIS_PASSWORD}@redis:6379/0", - result_backend=f"redis://:{REDIS_PASSWORD}@redis:6379/0", worker_hijack_root_logger=False, worker_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(name)s: %(message)s", worker_task_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(name)s: %(message)s", broker_connection_retry_on_startup=True, - timezone=TIME_ZONE, task_serializer="json", result_serializer="json", result_compression="zlib", accept_content=["json"], - broker_transport_options={ - "retry_policy": {"interval_start": 0.1, "interval_step": 0.2, "max_retries": 5}, - "visibility_timeout": 3600, - }, task_acks_late=True, task_reject_on_worker_lost=True, ) diff --git a/evibes/settings/celery.py b/evibes/settings/celery.py index 6d66306c..6ff53d01 100644 --- a/evibes/settings/celery.py +++ b/evibes/settings/celery.py @@ -5,8 +5,22 @@ from evibes.settings.base import REDIS_PASSWORD, TIME_ZONE CELERY_ENABLE_UTC = False CELERY_TIMEZONE = TIME_ZONE -CELERY_BROKER_URL = f"redis://:{REDIS_PASSWORD + '@'}redis:6379/0" -CELERY_RESULT_BACKEND = f"redis://:{REDIS_PASSWORD + '@'}redis:6379/0" +CELERY_BROKER_URL = f"redis://:{REDIS_PASSWORD}@redis:6379/0" + +CELERY_BROKER_HEARTBEAT = 10 +CELERY_BROKER_HEARTBEAT_CHECKRATE = 2 + +CELERY_BROKER_POOL_LIMIT = 10 +CELERY_BROKER_TRANSPORT_OPTIONS = { + "visibility_timeout": 3600, + "retry_policy": {"interval_start": 0.1, "interval_step": 0.2, "max_retries": 5}, + "socket_keepalive": True, + "socket_timeout": 30, + "socket_connect_timeout": 30, + "retry_on_timeout": True, +} + +CELERY_RESULT_BACKEND = CELERY_BROKER_URL CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers.DatabaseScheduler"