为了账号安全,请及时绑定邮箱和手机立即绑定

从 dockerfile 中的 uvicorn 命令运行 fastapi 和从 pythonfile

从 dockerfile 中的 uvicorn 命令运行 fastapi 和从 pythonfile

FFIVE 2023-04-18 15:25:48
我正在运行一个快速的 api,当我开发时,我的 app.py 文件中有以下代码app.py 中的代码:import uvicornif __name__=="__main__":    uvicorn.run("app.app:app",host='0.0.0.0', port=4557, reload=True, debug=True, workers=3)所以我正要CMD ["python3","app.py"]在我的 Dockerfile 中运行。在 fastapi 示例中,他们做了这样的事情:CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]我想知道这两种方法有什么区别,因为我认为它们都可以。
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

不,没有区别。

命令行运行方法 ( uvicorn app.main:app) 和使用 python 命令 ( python app.py) 执行 app.py 是相同的。uvicorn.main.run(...)这两种方法都在后台调用函数。

换句话说,uvicorn命令是函数的快捷方式uvicorn.run(...)

所以,在你的情况下函数调用

uvicorn.run("app.app:app",host='0.0.0.0', port=4557, reload=True, debug=True, workers=3)

可以通过 uvicorn 命令行来完成,

uvicorn app.app:app --host 0.0.0.0 --port 4557 --reload --debug --workers


查看完整回答
反对 回复 2023-04-18
?
ibeautiful

TA贡献1993条经验 获得超5个赞

答案是否定的。应用程序不会有任何区别,使用Docker进行部署只是使其更容易,如果没有 Docker,您需要使用ASGI兼容服务器(如 Uvicorn)运行它,您可能还需要设置一些工具以确保它在停止或停止时自动重新启动崩溃。Docker 镜像可以自动处理所有这些工作,而不是尝试手动处理。



查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 715 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信