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 = []