Fix #93: Fix incorrect Content-Length headers causing truncated responses and timeouts #122

Open
typosaurus wants to merge 2 commits from typosaurus/ticket-93 into master
3 changed files with 3 additions and 7 deletions

View File

@ -12,7 +12,6 @@ from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse, RedirectResponse
from fastapi.staticfiles import StaticFiles
from fastapi.exceptions import RequestValidationError
from starlette.middleware.gzip import GZipMiddleware
from devplacepy.config import (
STATIC_DIR,
STATIC_VERSION,
@ -610,10 +609,6 @@ async def response_timing(request: Request, call_next):
response.headers["X-Response-Time"] = f"{(time.perf_counter() - start) * 1000:.1f}ms"
return response
app.add_middleware(GZipMiddleware, minimum_size=512, compresslevel=5)
_home_cache = TTLCache(ttl=int(os.environ.get("DEVPLACE_HOME_CACHE_TTL", "60")), max_size=4)

View File

@ -11,7 +11,7 @@ How a request flows through middleware to a router, how the database layer is bu
## Middleware
Seven HTTP middlewares run as a stack around every request, listed outermost first. `response_timing` is the outermost, `refresh_db_snapshot` the innermost, and a `GZipMiddleware` (responses over 512 bytes) wraps the whole stack on top:
Six HTTP middlewares run as a stack around every request, listed outermost first. `response_timing` is the outermost and `refresh_db_snapshot` the innermost. Compression is handled by nginx in production; the Python application does not compress responses itself.
| Middleware (outermost first) | Responsibility |
|------------|----------------|

View File

@ -4,7 +4,8 @@ version = "1.0.0"
description = "DevPlace - The Developer Social Network"
requires-python = ">=3.12"
dependencies = [
"fastapi",
"fastapi>=0.110.0",
"starlette>=0.37.0",
"uvicorn[standard]",
"jinja2",
"python-multipart",