From 5d6d1d09a85b42aebc9cf26d9facc5ac721f83b6 Mon Sep 17 00:00:00 2001 From: Johann Schleier-Smith Date: Fri, 25 Apr 2025 13:51:07 -0700 Subject: [PATCH 1/2] fix event loop for windows --- src/postgres_mcp/server.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/postgres_mcp/server.py b/src/postgres_mcp/server.py index 9ad7e6f..3957982 100644 --- a/src/postgres_mcp/server.py +++ b/src/postgres_mcp/server.py @@ -621,4 +621,10 @@ async def shutdown(sig=None): if __name__ == "__main__": + # As of version 3.3.0 Psycopg on Windows is not compatible with the default + # ProactorEventLoop. + # See: https://www.psycopg.org/psycopg3/docs/advanced/async.html#async + if sys.platform == "win32": + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + asyncio.run(main()) From 63be4575a4d279adc4698150e77b2e82cb467fe8 Mon Sep 17 00:00:00 2001 From: Johann Schleier-Smith Date: Fri, 25 Apr 2025 15:06:44 -0700 Subject: [PATCH 2/2] fix event loop for windows --- src/postgres_mcp/__init__.py | 7 +++++++ src/postgres_mcp/server.py | 10 ---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/postgres_mcp/__init__.py b/src/postgres_mcp/__init__.py index c6989fd..a00e349 100644 --- a/src/postgres_mcp/__init__.py +++ b/src/postgres_mcp/__init__.py @@ -1,4 +1,5 @@ import asyncio +import sys from . import server from . import top_queries @@ -6,6 +7,12 @@ def main(): """Main entry point for the package.""" + # As of version 3.3.0 Psycopg on Windows is not compatible with the default + # ProactorEventLoop. + # See: https://www.psycopg.org/psycopg3/docs/advanced/async.html#async + if sys.platform == "win32": + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + asyncio.run(server.main()) diff --git a/src/postgres_mcp/server.py b/src/postgres_mcp/server.py index 3957982..af5669a 100644 --- a/src/postgres_mcp/server.py +++ b/src/postgres_mcp/server.py @@ -618,13 +618,3 @@ async def shutdown(sig=None): # Exit with appropriate status code sys.exit(128 + sig if sig is not None else 0) - - -if __name__ == "__main__": - # As of version 3.3.0 Psycopg on Windows is not compatible with the default - # ProactorEventLoop. - # See: https://www.psycopg.org/psycopg3/docs/advanced/async.html#async - if sys.platform == "win32": - asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) - - asyncio.run(main())