etesync-server/etebase_fastapi/middleware.py
Tom Hacohen 473448246f Add a django middleware to cleanup db connections.
This severely impacts performance, though without it we are getting
django.db.utils.InterfaceError once connections in the pool go stale.
2020-12-30 09:26:33 +02:00

16 lines
469 B
Python

from starlette.types import ASGIApp, Receive, Scope, Send
from django.db import close_old_connections, reset_queries
class DjangoDbConnectionCleanupMiddleware:
def __init__(self, app: ASGIApp):
self.app = app
async def __call__(self, scope: Scope, receive: Receive, send: Send):
reset_queries()
close_old_connections()
try:
await self.app(scope, receive, send)
finally:
close_old_connections()