我有一个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”,port =[30000,8443])
)的方法,要么改变Dockerfile中CMD命令的方式,如这个GitHub问题评论 - gunicorn -k uvicorn.workers.UvicornWorker -w 1 --bind ip1:port1 --bind ip2:port2 --bind ip3:port3