首页 > 解决方案 > 以编程方式停止 Uvicorn 服务器的最佳方法是什么?

问题描述

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

所以我想在 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 服务器的方法。最好的方法是什么?

标签: fastapiuvicorn

解决方案


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

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


推荐阅读