我有一个由诗歌建造的快速路项目。我想在pyproject.tom中使用脚本部分运行应用程序,如下所示:
poetry run start该部分中的双引号是什么?
[tool.poetry.scripts]
start = ""我试图运行以下脚本。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
def main():
print("Hello World")
uvicorn.run(app, host="0.0.0.0", port=8000, reload=True, workers=2)
if __name__ == "__main__":
main()它会停止应用程序并显示如下警告。
警告:必须将应用程序作为导入字符串传递,以启用“重新加载”或“工作者”.
发布于 2021-01-22 17:37:47
我找到了解决这个问题的办法。见下文:
在pyproject.toml中
[tool.poetry.scripts]
start = "my_package.main:start"在main.py内部的my_package文件夹中。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
def start():
"""Launched with `poetry run start` at root level"""
uvicorn.run("my_package.main:app", host="0.0.0.0", port=8000, reload=True)发布于 2020-09-13 11:22:34
您需要将模块路径(module:function)传递给project.toml中的start脚本。
[tool.poetry.scripts]
start = "app:main"现在运行下面的命令将调用main模块中的app函数:
$ poetry run start发布于 2020-09-09 10:34:06
正如错误消息所述,请执行
uvicorn.run("app")注意,也使用重新加载和工人是无用的,将只使用重新加载程序。这些标志是相互排斥的。
https://stackoverflow.com/questions/63809553
复制相似问题