【发布时间】:2022-02-25 19:28:05
【问题描述】:
如果我从终端运行 uvicorn main:app --reload 一切正常。
当把它放在一个 my_script.sh 文件中时
#!/bin/bash
exec uvicorn main:app --reload
然后什么都没有发生。为什么?
我找到了这个:Uvicorn/FastAPI executable,但似乎没有答案。
【问题讨论】:
如果我从终端运行 uvicorn main:app --reload 一切正常。
当把它放在一个 my_script.sh 文件中时
#!/bin/bash
exec uvicorn main:app --reload
然后什么都没有发生。为什么?
我找到了这个:Uvicorn/FastAPI executable,但似乎没有答案。
【问题讨论】:
您可以改为在现有 Python 脚本(即您的情况下为 main.py)或新 Python 脚本中添加 main 方法(更具体地说,if __name__ == "__main__":)或 run uvicorn 服务器,允许您设置参数,例如host、port、reload、workers 等(如图所示here),然后从您的 bash 脚本中简单地执行该 Python 脚本。查看here 了解所有可用的options。
import uvicorn
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
编辑:由于您提到below,您“在 docker-compose 的入口点部分定义了脚本”,因此请确保您提供准确的路径bash 脚本,以及它具有执行权限。看看问题here 和here。我还建议看看relevant FastAPI documentation。
【讨论】: