Skip to content

Commit 1d8b1e9

Browse files
authored
PTFE-1196 ping redis on healthcheck calls (#503)
1 parent 4ba4563 commit 1d8b1e9

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

runner_manager/routers/_health.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,23 @@
1-
from fastapi import APIRouter, Response
1+
import logging
2+
3+
from fastapi import APIRouter, Depends, Response
4+
from redis import Redis
5+
6+
from runner_manager.dependencies import get_redis
27

38
router = APIRouter(prefix="/_health")
49

10+
log = logging.getLogger(__name__)
11+
512

613
@router.get("/", status_code=200)
7-
def healthcheck():
14+
def healthcheck(r: Redis = Depends(get_redis)):
815
"""Healthcheck endpoint that answers to GET requests on /_health"""
16+
17+
try:
18+
r.ping()
19+
except Exception as exp:
20+
log.error("Redis healthcheck failed: %s", exp)
21+
return Response(status_code=500)
22+
923
return Response(status_code=200)

tests/api/test_health.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
from redis import Redis
2+
3+
from runner_manager.dependencies import get_redis
4+
5+
16
def test_healthcheck(client):
2-
response = client.get("/_health")
7+
response = client.get("/_health/")
8+
assert response.status_code == 200
9+
10+
11+
def test_healthcheck_redis_unavailable(client, fastapp):
12+
fake_connection = Redis.from_url("redis://localhost:63799/0")
13+
fastapp.dependency_overrides[get_redis] = lambda: fake_connection
14+
response = client.get("/_health/")
15+
assert response.status_code == 500
16+
fastapp.dependency_overrides[get_redis] = get_redis
17+
response = client.get("/_health/")
318
assert response.status_code == 200

0 commit comments

Comments
 (0)