我有一个 FastAPI 应用程序,正在使用 Uvicorn 以编程方式在端口 30000 上运行。现在我也想在端口 8443 上运行相同的应用程序。相同的应用程序需要在这两个端口上运行。我怎样才能在Python代码中做到这一点?
最小可重现代码:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/healthcheck/")
def healthcheck():
return 'Health - OK'
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=30000)
我想要类似的东西
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", ports=[30000,8443])
解释:
我的应用程序将在我的组织 Azure Kubernetes 服务上运行。在端口 30000 上运行的应用程序保留用于内部 HTTP 流量,在 8443 上运行的应用程序映射到 Kubernetes 服务的 443 以暴露给外部流量。
更多细节:
我将从此应用程序创建一个 Docker 容器,其想法是包括
CMD ["python3", "app.py"]
最后运行应用程序。我正在寻找一种解决方案,可以提供一种更改 python 代码的方法(uvicorn.run(app, host="0.0.0.0", ports=[30000,8443])
)或更改 Dockerfile 中的 CMD 命令,例如此 GitHub 问题评论 https://github.com/encode/uvicorn/issues/571#issuecomment-830163848 - gunicorn -k uvicorn.workers.UvicornWorker -w 1 --bind ip1:port1 --bind ip2:port2 --bind ip3:port3