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 9b127c55f2
commit 120fcfb316

View File

@@ -1,9 +1,11 @@
# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
# SPDX-License-Identifier: MIT
import asyncio
import base64
import json
import logging
import os
from typing import Annotated, Any, List, cast
from uuid import uuid4
@@ -52,6 +54,11 @@ from src.utils.json_utils import sanitize_args
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"
app = FastAPI(