modify: 网关拆为独立包 chongming-gateway(源码迁出到 utils/gateway,打包只留 plugins.mbank)

This commit is contained in:
2026-10-13 17:29:38 +08:00
parent ac7ddb7445
commit 6d087fa4e3
44 changed files with 298 additions and 5594 deletions
+10 -8
View File
@@ -18,22 +18,22 @@ import os
import platform
import sys
from multiprocessing import freeze_support
from pathlib import Path
import server # noqa: F401 # 预加载:master 内完成模块银行装载,fork 出的 worker 共享
import server # noqa: F401 # 预加载:master 内完成插件模块银行装载,fork 出的 worker 共享
import uvloop # noqa: F401 # 显式导入保证打包时收集 uvloop(uvicorn/granian loop 依赖)
from chongming import RELOAD_PATHS # 热重载监听目录(网关包内定义)
from chongming.app.core.logger import get_logger
from chongming.app.core.parent_death import guard_parent_death
from utils.launch import launch
from uvicorn.workers import UvicornWorker
use_shell = platform.system() == "Windows"
# 未设置 APP_SERVER 时的平台默认(保持现状)
DEFAULT_SERVER = "uvicorn" if use_shell else "gunicorn"
# DEFAULT_SERVER = "uvicorn" if use_shell else "gunicorn"
DEFAULT_SERVER = "granian"
SUPPORTED_SERVERS = ("gunicorn", "uvicorn", "granian")
# 热重载(reload=true)监听的源码目录,避免 granian 默认扫 cwd 时被 logs/ 写日志触发
RELOAD_PATHS = [Path("src/chongming"), Path("src/plugins")]
class UvloopUvicornWorker(UvicornWorker):
CONFIG_KWARGS = {"loop": "uvloop"}
@@ -134,8 +134,6 @@ def app_run(app_config: dict, default_config: dict):
Returns:
None: 此函数不返回值,直接启动服务器并阻塞运行
"""
from app.core.logger import get_logger # type: ignore
logger = get_logger("app")
params = _server_params(app_config)
@@ -182,6 +180,10 @@ def main():
Returns:
None: 此函数不返回值,调用launch函数启动应用
"""
# 父进程死亡防护(master 侧):引导进程(onefile 引导/终端 shell)死亡时
# ——含被 SIGKILL——内核给本进程发 SIGTERM,granian 走优雅停机收掉全部 worker;
# worker 侧在 app 的 lifespan 里各自设置(PR_SET_PDEATHSIG 不跨 fork 继承)。
guard_parent_death(get_logger("app"))
freeze_support()
launch(app_run, "production")