以编程方式停止 Uvicorn 服务器的最佳方法是什么?

What is the best way to stop Uvicorn server programmatically?

在 Docker 中,我 运行 uvicorn 使用 bootstrap.sh & 命令行。代码中有一个关于public密钥文件的条件,如果发生异常,服务器需要关闭。

所以我想在 main.py 中做的是这里(它是 FastAPI)。

public_key = None

try:
    with open(PUBLIC_KEY_FILE) as public_key_file:
        public_key = public_key_file.read()
except Exception as f_error:
    logger.exception(f_error)
    module = util.find_spec("uvicorn")

    if module:
        uvicorn = import_module('uvicorn')
        uvicorn.stop() # what I want to do

但是,我找不到以编程方式关闭 uvicorn 服务器的方法。什么是最好的方法?

在您的 except 子句中引发异常(或重新引发 f_error)将终止当前应用程序,除非在您包含的代码之外存在另一级别的异常处理。

当 python 解释器接收到顶级异常(即未被 except 捕获的异常)时,解释器终止。您可以使用它来关闭脚本并触发容器运行时以根据需要重新启动应用程序。