我正在运行一个快速的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/