fastapi - 如何从 Poetry 运行 FastAPI 应用程序?
问题描述
我有一个由诗歌构建的 fastapi 项目。我想使用 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()
它停止应用程序并只显示这样的警告。
警告:您必须将应用程序作为导入字符串传递以启用“重新加载”或“工作人员”。
解决方案
我找到了解决这个问题的方法。见下文:
在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)
推荐阅读
- python - 在 Django 应用程序中使用 gmail smtp 发送电子邮件时出错
- java - 为什么函数 checkAB 不能正常工作?
- python - 在哪里可以找到函数的 kwargs/args 文档
- c++ - 使用 g++ 编译 olcPixelGameEngine 时出错
- node.js - 从 NodeJS、NLP 中的文本中提取人名
- node.js - 没有 --experimental-modules 标志,使用 import 的 Node.js 不起作用
- python - 如何在倒计时计时器中显示倒计时
- javascript - 我应该隐藏位于 package.json 中的 API 端点作为代理吗
- java - JAVA检查字符串是否不包含字符串数组中的子字符串,
- firebase - Firebase 上的内容权限管理