fix: configure Windows event loop policy for PostgreSQL async compatibility (#618)

- Set asyncio.WindowsSelectorEventLoopPolicy() on Windows at app module level
- Ensures psycopg can run in async mode on Windows regardless of entry point
- Fixes 'ProactorEventLoop' error when using PostgreSQL checkpointer
- Works with all entry points: server.py, uvicorn, langgraph dev, etc.
This commit is contained in:
Willem Jiang 2025-10-16 17:38:18 +08:00 committed by Willem Jiang
parent 52540eb6d8
commit fab45bb0f9
1 changed files with 7 additions and 0 deletions

View File

@ -1,9 +1,11 @@
# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates # Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
import asyncio
import base64 import base64
import json import json
import logging import logging
import os
from typing import Annotated, Any, List, cast from typing import Annotated, Any, List, cast
from uuid import uuid4 from uuid import uuid4
@ -52,6 +54,11 @@ from src.utils.json_utils import sanitize_args
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# Configure Windows event loop policy for PostgreSQL compatibility
# On Windows, psycopg requires a selector-based event loop, not the default ProactorEventLoop
if os.name == "nt":
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
INTERNAL_SERVER_ERROR_DETAIL = "Internal Server Error" INTERNAL_SERVER_ERROR_DETAIL = "Internal Server Error"
app = FastAPI( app = FastAPI(