python - 从dockerfile中的uvicorn命令和pythonfile运行fastapi和pythonfile有什么区别?

标签 python docker fastapi uvicorn

我正在运行一个快速的api,在开发时,我的app.py文件中包含以下代码
app.py中的代码:

import uvicorn


if __name__=="__main__":
    uvicorn.run("app.app:app",host='0.0.0.0', port=4557, reload=True, debug=True, workers=3)
所以我正要在Dockerfile中运行CMD ["python3","app.py"]
在fastapi示例中,他们做了这样的事情:
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
我想知道这两种方法有什么区别,因为我认为它们都可以工作。

最佳答案

不,没有区别。
逗号运行方法(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)
可以通过uviconrn命令行完成,
uvicorn app.app:app --host 0.0.0.0 --port 4557 --reload --debug --workers 3

旁注
--debug 选项在command line options help page中隐藏,但可以在source code中找到。因此,感觉使用uvicorn命令运行应用程序可以视为生产产品。

关于python - 从dockerfile中的uvicorn命令和pythonfile运行fastapi和pythonfile有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63177681/

相关文章:

docker - 在Kubernetes(+ Rancher)中评估Docker的安全性

python - FastAPI:如何访问依赖项内的 APIRoute 对象

python - django django-allauth 将社交登录中的 extra_data 保存在信号中

python - 有没有办法从 epydoc 生成中排除特定文件?

docker - COPY失败:stat:没有这样的文件或目录

docker - 如何减少 CI 构建期间的 docker pull 时间?

python - Python中如何保证一段代码一次只能被一个请求执行?

python - 覆盖 fastAPI 的 HTTPException 响应主体

python - 从 2 列创建分类数据 - Python Pandas

python - 如何在 Tensorflow 中对 3D 特征向量应用线性变换?