You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码调用Hypercorn的serve接口配置多worker启动FastAPI应用

Hypercorn 代码启动多worker不生效问题解决方案

警告原因

hypercorn.asyncio.serve 函数仅用于启动单个工作进程的服务实例,workers 配置项是 Hypercorn 主进程用来调度多进程资源的参数,直接调用 serve 不会触发多进程逻辑,因此配置不生效且会触发警告。
你之前查阅的文档中提到的 serve 函数适用场景是嵌入现有asyncio runtime的单进程服务部署,和你需要的多进程启动场景不匹配。

正确实现方案

直接使用 Hypercorn 提供的 run 方法即可,该方法和命令行启动逻辑完全一致,会自动处理多worker调度,你的配置可以直接复用:

import logging
from hypercorn.config import Config
from hypercorn import run

from api.app import app

mainLog = logging.getLogger('main')
# 原有logging配置逻辑直接保留即可
...

if __name__ == "__main__":
    config = Config()
    config.bind = ['0.0.0.0:8000']
    config.access_log_format = "%(R)s %(s)s %(st)s %(D)s %({Header}o)s"
    config.accesslog = mainLog
    config.loglevel = 'INFO'
    config.worker_class = 'asyncio'
    config.workers = 9
    try:
        run(app, config)
    except Exception:
        mainLog.exception('Fail to start server')

该方案和你原来使用的命令行启动效果完全一致,所有配置项都会正常生效。

可选方案:自行实现多进程调度

如果有特殊需求需要自己控制进程逻辑,可以通过multiprocessing库启动多个进程,每个进程内单独调用serve函数,注意需要额外开启端口复用配置:

config.reuse_port = True

内容的提问来源于stack exchange,提问作者daria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:15:03