Files
ZNJJ-api-server/src/serve.py
T

24 lines
802 B
Python
Raw Normal View History

"""Portable single-worker entry point: python -m src.serve --port 8000."""
import argparse
import asyncio
import os
import uvicorn
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--host', default='127.0.0.1')
parser.add_argument('--port', default=8000, type=int)
args = parser.parse_args()
# psycopg 不支持 Windows ProactorEventLoop。直接运行 Server.serve
# 使用已创建的 Selector loop,不被 uvicorn 默认 loop factory 覆盖。
factory = asyncio.SelectorEventLoop if os.name == 'nt' else None
config = uvicorn.Config('src.main:app', host=args.host, port=args.port, loop='asyncio')
with asyncio.Runner(loop_factory=factory) as runner:
runner.run(uvicorn.Server(config).serve())
if __name__ == '__main__':
main()