diff --git a/http_service/bugbug_http/app.py b/http_service/bugbug_http/app.py index 8451f4e1..0cd68aa3 100644 --- a/http_service/bugbug_http/app.py +++ b/http_service/bugbug_http/app.py @@ -10,6 +10,7 @@ import uuid from dataclasses import dataclass, field from datetime import datetime, timedelta from typing import Any, Callable, Sequence +from urllib.parse import urlparse import orjson import zstandard @@ -63,8 +64,15 @@ spec = APISpec( ) application = Flask(__name__) -redis_url = os.environ.get("REDIS_URL", "redis://localhost/0") -redis_conn = Redis.from_url(redis_url) +url = urlparse(os.environ.get("REDIS_URL", "redis://localhost/0")) +assert url.hostname is not None +redis_conn = Redis( + host=url.hostname, + port=url.port if url.port is not None else 6379, + password=url.password, + ssl=True, + ssl_cert_reqs=None, +) # Kill jobs which don't finish within 12 minutes. JOB_TIMEOUT = 12 * 60 diff --git a/http_service/bugbug_http/models.py b/http_service/bugbug_http/models.py index 50b91b34..30029bef 100644 --- a/http_service/bugbug_http/models.py +++ b/http_service/bugbug_http/models.py @@ -8,6 +8,7 @@ import os from datetime import timedelta from functools import lru_cache from typing import Sequence +from urllib.parse import urlparse import orjson import requests @@ -39,7 +40,15 @@ MODELS_NAMES = [ ] DEFAULT_EXPIRATION_TTL = 7 * 24 * 3600 # A week -redis = Redis.from_url(os.environ.get("REDIS_URL", "redis://localhost/0")) +url = urlparse(os.environ.get("REDIS_URL", "redis://localhost/0")) +assert url.hostname is not None +redis = Redis( + host=url.hostname, + port=url.port if url.port is not None else 6379, + password=url.password, + ssl=True, + ssl_cert_reqs=None, +) MODEL_CACHE: ReadthroughTTLCache[str, Model] = ReadthroughTTLCache( timedelta(hours=1), lambda m: Model.load(f"{m}model") diff --git a/http_service/bugbug_http/worker.py b/http_service/bugbug_http/worker.py index 9f1ae64d..6016c46a 100644 --- a/http_service/bugbug_http/worker.py +++ b/http_service/bugbug_http/worker.py @@ -6,6 +6,7 @@ import os import sys +from urllib.parse import urlparse from redis import Redis from rq import Connection, Worker @@ -24,8 +25,15 @@ def main(): # Provide queue names to listen to as arguments to this script, # similar to rq worker - redis_url = os.environ.get("REDIS_URL", "redis://localhost/0") - redis_conn = Redis.from_url(redis_url) + url = urlparse(os.environ.get("REDIS_URL", "redis://localhost/0")) + assert url.hostname is not None + redis_conn = Redis( + host=url.hostname, + port=url.port if url.port is not None else 6379, + password=url.password, + ssl=True, + ssl_cert_reqs=None, + ) with Connection(connection=redis_conn): qs = sys.argv[1:] or ["default"]