fastapi - 以编程方式停止 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 服务器的方法。最好的方法是什么?
解决方案
在您的 except 子句中引发异常(或重新引发 f_error)将终止当前应用程序,除非在您包含的代码之外还有另一个级别的异常处理。
当python解释器接收到一个顶级异常(即未被捕获的except
)时,解释器终止。您可以使用它来关闭脚本并根据需要触发容器运行时重新启动应用程序。
推荐阅读
- php - 无法将 NGINX 用作使用 php React 和 Rachet 设置 WebSocket 服务器的 WebSocket 代理
- kotlin - 如何在 gradle zip 任务中包含 .gitignore?
- python - 如何在 Python 数据框中交换行
- excel - Excel 函数 STDEV.P IF AND 嵌套公式 #VALUE
- html - 可访问地对地址进行分组/标记的最佳实践
- flutter - 在 Flutter Webview 中访问 localStorage
- reactjs - 如何在 reactjs 中使用 axios 发送嵌套图像
- python - Python array updates all values when appended
- azure - JMETER Recording Controller,从重定向 URL 获取始终相同的状态和 nonce 值
- swift - SwiftUI:如何在滑块中插入函数