This commit is contained in:
Timothy Jaeryang Baek
2026-05-09 02:38:08 +09:00
parent 0103d7e82c
commit 7eaecbad5a
2 changed files with 16 additions and 0 deletions
+9
View File
@@ -1,4 +1,5 @@
import os
import sys
import json
import logging
from contextlib import asynccontextmanager, contextmanager
@@ -332,6 +333,14 @@ get_db = contextmanager(get_session)
# all work without any stripping or translation.
ASYNC_SQLALCHEMY_DATABASE_URL = _make_async_url(SQLALCHEMY_DATABASE_URL)
# psycopg v3 cannot run in async mode under Windows' default
# ProactorEventLoop — switch to SelectorEventLoop before creating
# the async engine. This runs at import time, which is early enough
# to cover every entry point (workers, reload, direct invocations).
if sys.platform == 'win32' and _is_postgres_url(DATABASE_URL):
import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
if 'sqlite' in ASYNC_SQLALCHEMY_DATABASE_URL:
# Generous default — async coroutines + no session sharing = high connection demand.
_sqlite_pool_size = DATABASE_POOL_SIZE if isinstance(DATABASE_POOL_SIZE, int) and DATABASE_POOL_SIZE > 0 else 512