Features: 1) Add Redis sysctl configurations to docker-compose.yml; 2) Introduce broker heartbeat and transport options for Celery in settings/celery.py.
Fixes: 1) Extract and centralize broker transport options in `settings/celery.py`; 2) Remove redundant Celery settings from `celery.py`. Extra: 1) Cleanup and streamline Celery configuration in `celery.py`.
This commit is contained in:
parent
29005527bb
commit
f37206ed4e
3 changed files with 19 additions and 9 deletions
|
|
@ -68,6 +68,9 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
sysctls:
|
||||||
|
net.ipv4.tcp_keepalive_time: 60
|
||||||
|
vm.overcommit_memory: 1
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: [ "CMD", "redis-cli", "-a", "$REDIS_PASSWORD", "ping" ]
|
test: [ "CMD", "redis-cli", "-a", "$REDIS_PASSWORD", "ping" ]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
|
|
|
||||||
|
|
@ -9,21 +9,14 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "evibes.settings")
|
||||||
app = Celery("evibes")
|
app = Celery("evibes")
|
||||||
|
|
||||||
app.conf.update(
|
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_hijack_root_logger=False,
|
||||||
worker_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(name)s: %(message)s",
|
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",
|
worker_task_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(name)s: %(message)s",
|
||||||
broker_connection_retry_on_startup=True,
|
broker_connection_retry_on_startup=True,
|
||||||
timezone=TIME_ZONE,
|
|
||||||
task_serializer="json",
|
task_serializer="json",
|
||||||
result_serializer="json",
|
result_serializer="json",
|
||||||
result_compression="zlib",
|
result_compression="zlib",
|
||||||
accept_content=["json"],
|
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_acks_late=True,
|
||||||
task_reject_on_worker_lost=True,
|
task_reject_on_worker_lost=True,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,22 @@ from evibes.settings.base import REDIS_PASSWORD, TIME_ZONE
|
||||||
CELERY_ENABLE_UTC = False
|
CELERY_ENABLE_UTC = False
|
||||||
CELERY_TIMEZONE = TIME_ZONE
|
CELERY_TIMEZONE = TIME_ZONE
|
||||||
|
|
||||||
CELERY_BROKER_URL = f"redis://:{REDIS_PASSWORD + '@'}redis:6379/0"
|
CELERY_BROKER_URL = f"redis://:{REDIS_PASSWORD}@redis:6379/0"
|
||||||
CELERY_RESULT_BACKEND = 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"
|
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers.DatabaseScheduler"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue