我正在運(yùn)行一個(gè)快速的 api,當(dāng)我開發(fā)時(shí),我的 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 中運(yùn)行。在 fastapi 示例中,他們做了這樣的事情:CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]我想知道這兩種方法有什么區(qū)別,因?yàn)槲艺J(rèn)為它們都可以。
2 回答

守候你守候我
不,沒有區(qū)別。
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
不,沒有區(qū)別。
命令行運(yùn)行方法 (?uvicorn app.main:app
) 和使用 python 命令 (?python app.py
) 執(zhí)行 app.py 是相同的。uvicorn.main.run(...)
這兩種方法都在后臺(tái)調(diào)用函數(shù)。
換句話說,uvicorn
命令是函數(shù)的快捷方式uvicorn.run(...)
。
所以,在你的情況下函數(shù)調(diào)用
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

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
答案是否定的。應(yīng)用程序不會(huì)有任何區(qū)別,使用Docker進(jìn)行部署只是使其更容易,如果沒有 Docker,您需要使用ASGI兼容服務(wù)器(如 Uvicorn)運(yùn)行它,您可能還需要設(shè)置一些工具以確保它在停止或停止時(shí)自動(dòng)重新啟動(dòng)崩潰。Docker 鏡像可以自動(dòng)處理所有這些工作,而不是嘗試手動(dòng)處理。
添加回答
舉報(bào)
0/150
提交
取消