首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从诗歌中运行FastAPI应用程序?

如何从诗歌中运行FastAPI应用程序?
EN

Stack Overflow用户
提问于 2020-09-09 10:17:54
回答 4查看 15.8K关注 0票数 15

我有一个由诗歌建造的快速路项目。我想在pyproject.tom中使用脚本部分运行应用程序,如下所示:

代码语言:javascript
复制
poetry run start

该部分中的双引号是什么?

代码语言:javascript
复制
[tool.poetry.scripts]
start = ""

我试图运行以下脚本。

代码语言:javascript
复制
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()

它会停止应用程序并显示如下警告。

警告:必须将应用程序作为导入字符串传递,以启用“重新加载”或“工作者”.

EN

回答 4

Stack Overflow用户

发布于 2021-01-22 17:37:47

我找到了解决这个问题的办法。见下文:

pyproject.toml

代码语言:javascript
复制
[tool.poetry.scripts]
start = "my_package.main:start"

main.py内部的my_package文件夹中。

代码语言:javascript
复制
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)
票数 24
EN

Stack Overflow用户

发布于 2020-09-13 11:22:34

您需要将模块路径(module:function)传递给project.toml中的start脚本。

代码语言:javascript
复制
[tool.poetry.scripts]
start = "app:main"

现在运行下面的命令将调用main模块中的app函数:

代码语言:javascript
复制
$ poetry run start
票数 7
EN

Stack Overflow用户

发布于 2020-09-09 10:34:06

正如错误消息所述,请执行

代码语言:javascript
复制
uvicorn.run("app")

注意,也使用重新加载和工人是无用的,将只使用重新加载程序。这些标志是相互排斥的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63809553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档