Skip to content

Commit da3b8f7

Browse files
authored
Merge pull request #83 from guerda/feat_slow_log
add slow log for long running queries
2 parents 6aceef1 + 11c581a commit da3b8f7

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ test:
1111
pytest
1212

1313
dev:
14-
fastapi dev app.py --host 0.0.0.0
14+
MUSICLIBRARY_DB=musiclibrary.db fastapi dev app.py --host 0.0.0.0
1515

1616
prod:
1717
fastapi run app.py

app.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
import time
23
from typing import Annotated
34
from urllib.parse import quote_plus
45

@@ -18,6 +19,7 @@
1819
console_handler = logging.StreamHandler()
1920
console_handler.setFormatter(Logfmter(keys=["at", "name", "asctime"]))
2021
logging.basicConfig(level=logging.INFO, handlers=[console_handler])
22+
SLOW_REQUEST_THRESHOLD = 500
2123

2224
logger = logging.getLogger("beets-statistics")
2325

@@ -61,6 +63,17 @@ async def get_beets_statistics():
6163
templates.env.filters["quote_plus"] = lambda u: quote_plus(u)
6264

6365

66+
@app.middleware("http")
67+
async def add_slow_request_log(request: Request, call_next):
68+
start_time = time.time()
69+
response = await call_next(request)
70+
process_time = (time.time() - start_time) * 1000
71+
logger.debug(f"Completed request in {process_time:.2f} ms")
72+
if process_time > SLOW_REQUEST_THRESHOLD:
73+
logger.warning("Slow log: {process_time:.2f} ms")
74+
return response
75+
76+
6477
@app.get("/", response_class=HTMLResponse)
6578
async def get_general_stats(
6679
request: Request,

0 commit comments

Comments
 (0)