From 877cf4056c7332100e99123d97e2bdb1d5f50ab3 Mon Sep 17 00:00:00 2001 From: Dominik Wombacher Date: Jan 11 2023 14:50:12 +0000 Subject: fix: BROKER_URL to honor REDIS_PORT and REDIS_DB Config Parameter BROKER_URL (https://docs.pagure.org/pagure/configuration.html#broker-url) is used by Celery workers and doesn't honor REDIS_PORT and REDIS_DB by default, it's right now expected that the User overwrite the BROKER_URL parameter if a non-standard port / db is required. Both parameters are defined in default_config.py, also based on Celery Docs: "all fields after the scheme are optional, and will default to localhost on port 6379, using database 0". Therefore it's safe and more user friendly to change the default of BROKER_URL to: "redis://%s:%d/%d" % (pagure_config["REDIS_HOST"], pagure_config["REDIS_PORT"], pagure_config["REDIS_DB"]) --- diff --git a/doc/configuration.rst b/doc/configuration.rst index dc35566..9b6020b 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -105,10 +105,10 @@ This configuration key is used to point celery to the broker to use. This is the broker that is used to communicate between the web application and its workers. -Defaults to: ``'redis://%s' % APP.config['REDIS_HOST']`` +Defaults to: ``"redis://%s:%d/%d" % (pagure_config["REDIS_HOST"], pagure_config["REDIS_PORT"], pagure_config["REDIS_DB"])`` -.. note:: See the :ref:`redis-section` for the ``REDIS_HOST`` configuration - key +.. note:: See the :ref:`redis-section` for the ``REDIS_HOST``, ``REDIS_PORT`` + and ``REDIS_DB``configuration keys Repo Directories diff --git a/pagure/lib/tasks.py b/pagure/lib/tasks.py index 2baf7c5..fdd9063 100644 --- a/pagure/lib/tasks.py +++ b/pagure/lib/tasks.py @@ -49,7 +49,11 @@ if os.environ.get("PAGURE_BROKER_URL"): elif pagure_config.get("BROKER_URL"): broker_url = pagure_config["BROKER_URL"] else: - broker_url = "redis://%s" % pagure_config["REDIS_HOST"] + broker_url = "redis://%s:%d/%d" % ( + pagure_config["REDIS_HOST"], + pagure_config["REDIS_PORT"], + pagure_config["REDIS_DB"], + ) conn = Celery("tasks", broker=broker_url, backend=broker_url) conn.conf.update(pagure_config["CELERY_CONFIG"]) diff --git a/pagure/lib/tasks_mirror.py b/pagure/lib/tasks_mirror.py index 4a07cf2..b5df7f2 100644 --- a/pagure/lib/tasks_mirror.py +++ b/pagure/lib/tasks_mirror.py @@ -40,7 +40,12 @@ if os.environ.get("PAGURE_BROKER_URL"): # pragma: no-cover elif pagure_config.get("BROKER_URL"): broker_url = pagure_config["BROKER_URL"] else: - broker_url = "redis://%s" % pagure_config["REDIS_HOST"] + broker_url = "redis://%s:%d/%d" % ( + pagure_config["REDIS_HOST"], + pagure_config["REDIS_PORT"], + pagure_config["REDIS_DB"], + ) + conn = Celery("tasks_mirror", broker=broker_url, backend=broker_url) conn.conf.update(pagure_config["CELERY_CONFIG"]) diff --git a/pagure/lib/tasks_services.py b/pagure/lib/tasks_services.py index 1fc4ebd..4193b1e 100644 --- a/pagure/lib/tasks_services.py +++ b/pagure/lib/tasks_services.py @@ -45,7 +45,11 @@ if os.environ.get("PAGURE_BROKER_URL"): # pragma: no cover elif pagure_config.get("BROKER_URL"): broker_url = pagure_config["BROKER_URL"] else: - broker_url = "redis://%s" % pagure_config["REDIS_HOST"] + broker_url = "redis://%s:%d/%d" % ( + pagure_config["REDIS_HOST"], + pagure_config["REDIS_PORT"], + pagure_config["REDIS_DB"], + ) conn = Celery("tasks", broker=broker_url, backend=broker_url) conn.conf.update(pagure_config["CELERY_CONFIG"])