|
11 | 11 | import traceback |
12 | 12 | import dotenv |
13 | 13 | import redis |
| 14 | +from redis.retry import Retry |
| 15 | +from redis.exceptions import TimeoutError, ConnectionError |
| 16 | +from redis.backoff import FullJitterBackoff |
14 | 17 | from datetime import datetime |
15 | 18 | from contextlib import contextmanager |
16 | 19 |
|
|
24 | 27 | SETTINGS_JOB_TIMEOUT = os.environ.get("SETTINGS_JOB_TIMEOUT", 600) |
25 | 28 | REDIS_URL = os.environ["REDIS_URL"] |
26 | 29 |
|
27 | | -REDIS_CONNECTION = redis.Redis.from_url(REDIS_URL) |
| 30 | +REDIS_CONNECTION = redis.Redis.from_url( |
| 31 | + REDIS_URL, |
| 32 | + retry=Retry(FullJitterBackoff(cap=10, base=1), 25), |
| 33 | + retry_on_error=[ConnectionError, TimeoutError], |
| 34 | + health_check_interval=1, |
| 35 | +) |
28 | 36 |
|
29 | 37 | app = Flask(__name__) |
30 | 38 |
|
@@ -224,7 +232,7 @@ def run_tests(settings_id, user): |
224 | 232 | test_settings = json.loads(REDIS_CONNECTION.hget("autotest:settings", key=settings_id)) |
225 | 233 | env_status = test_settings.get("_env_status") |
226 | 234 | if env_status == "setup": |
227 | | - raise Exception("Setting up test environment. Please try again later.") |
| 235 | + abort(make_response(jsonify(message="Setting up test environment. Please try again later."), 503)) |
228 | 236 | elif env_status == "error": |
229 | 237 | msg = "Settings Error" |
230 | 238 | settings_error = test_settings.get("_error", "") |
|
0 commit comments