From d3938034b6ee15542de5688d21dfd9422a4ed9f4 Mon Sep 17 00:00:00 2001 From: abram axel booth Date: Tue, 20 May 2025 12:29:50 -0400 Subject: [PATCH] configurable rabbit heartbeat get rabbitmq heartbeat timeout from environment variable RABBITMQ_HEARTBEAT_TIMEOUT instead of a static constant -- see https://www.rabbitmq.com/docs/heartbeats --- project/settings.py | 1 + share/search/daemon.py | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project/settings.py b/project/settings.py index e6db19bd5..8979e67c1 100644 --- a/project/settings.py +++ b/project/settings.py @@ -329,6 +329,7 @@ def split(string, delim): RABBITMQ_PORT = os.environ.get('RABBITMQ_PORT', '5672') RABBITMQ_MGMT_PORT = os.environ.get('RABBITMQ_MGMT_PORT', '15672') RABBITMQ_VHOST = os.environ.get('RABBITMQ_VHOST', '/') +RABBITMQ_HEARTBEAT_TIMEOUT = int(os.environ.get('RABBITMQ_HEARTBEAT_TIMEOUT', 60)) CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL', 'amqp://{}:{}@{}:{}/{}'.format(RABBITMQ_USERNAME, RABBITMQ_PASSWORD, RABBITMQ_HOST, RABBITMQ_PORT, RABBITMQ_VHOST)) diff --git a/share/search/daemon.py b/share/search/daemon.py index 4d33a5b50..5c155bf70 100644 --- a/share/search/daemon.py +++ b/share/search/daemon.py @@ -29,7 +29,6 @@ MINIMUM_BACKOFF_FACTOR = 1.6 # unitless ratio MAXIMUM_BACKOFF_FACTOR = 2.0 # unitless ratio MAXIMUM_BACKOFF_TIMEOUT = 60 # seconds -CONNECTION_HEARTBEAT = 20 # seconds (see https://www.rabbitmq.com/docs/heartbeats#false-positives ) class TooFastSlowDown(Exception): @@ -40,7 +39,7 @@ class IndexerDaemonControl: def __init__(self, celery_app, *, daemonthread_context=None, stop_event=None): self.kombu_connection = kombu.Connection( celery_app.conf.broker_url, # use celery_app.conf for consistent config - heartbeat=CONNECTION_HEARTBEAT, + heartbeat=settings.RABBITMQ_HEARTBEAT_TIMEOUT, ) self.daemonthread_context = daemonthread_context self._daemonthreads = []