4
4
"""
5
5
6
6
import gzip
7
- from contextvars import ContextVar
8
7
from io import BytesIO
9
8
from typing import TypedDict
10
9
@@ -58,19 +57,16 @@ class Config(TypedDict):
58
57
# https://stackoverflow.com/a/70390426/4784039
59
58
is_numeric = lambda x : x .replace ('.' , '' , 1 ).replace ('-' , '' , 1 ).isdigit ()
60
59
61
- _base_model_session_ctx = ContextVar ( "session" )
60
+ _sessionmaker = sessionmaker ( bind , AsyncSession , expire_on_commit = False )
62
61
63
62
@app .middleware ("request" )
64
63
async def inject_session (request ):
65
- request .ctx .session = sessionmaker (bind , AsyncSession , expire_on_commit = False )()
66
- request .ctx .session_ctx_token = _base_model_session_ctx .set (request .ctx .session )
67
-
64
+ request .ctx .session = _sessionmaker ()
68
65
69
66
@app .middleware ("response" )
70
67
async def close_session (request , response ):
71
- if hasattr (request .ctx , "session_ctx_token" ):
72
- _base_model_session_ctx .reset (request .ctx .session_ctx_token )
73
- await request .ctx .session .close ()
68
+ if session := getattr (request .ctx , "session" ):
69
+ await session .close ()
74
70
75
71
@app .get ("/maps/<world:str>/.rstate" )
76
72
async def get_render_state (request : sanic .Request , world : str ):
@@ -199,4 +195,4 @@ async def get_tile(request: sanic.Request, world: str, lod: int, params: str):
199
195
if threads <= 0 :
200
196
app .run (host = serverbind , port = serverport , fast = True )
201
197
else :
202
- app .run (host = serverbind , port = serverport , workers = threads )
198
+ app .run (host = serverbind , port = serverport , workers = threads )
0 commit comments