debugging 如何在调试模式下运行fastapi项目

beq87vna  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(335)

从fastapi python开始
这就是我如何串我的服务器

class Server:
    def __init__(self):
        self.app = FastAPI()

    def runServer(self, host: str, port: int,is_dev:bool):
        uvicorn.run(self.app, host=host, port=port,debug=is_dev)

if __name__ == "__main__":
    server = Server()
    # read the environment variables
    host: str = os.environ['host']
    port: int = int(os.environ['port'])
    is_dev: bool = bool(os.environ['dev'])

    server.runServer(host, port, is_dev)

这ups服务器,但不运行在自动重装模式,如果我做任何更改.
即使我试过

uvicorn.run(self.app, host=host, port=port, reload=is_dev)

重载是我猜不是一个选项,从而导致服务器中断。
我甚至尝试在launch.json中传递--reload参数,但仍然不起作用

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: FastAPI",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/main.py",
            "jinja": true,
            "args": ["--reload"],
            "env": {
                "host": "127.0.0.1",
                "port": "5555",
                "dev": "true"
            }
        }
    ]
}

有什么想法吗?我错过了什么吗?

blpfk2vs

blpfk2vs1#

只有当app参数是<module>:<app_instance>的字符串,并且reloaddebug参数为true时,uvicorn才会在reload模式下启动。如下所示:

if __name__ == "__main__":
    uvicorn.run("example:app", host="127.0.0.1", port=5000, reload=True)

文件摘录:
请注意,可以传递应用程序示例本身,而不是应用程序导入字符串。
uvicorn.run(app, host="127.0.0.1", port=5000, log_level="info")
但是,这种样式仅适用于不使用多处理(workers=NUM)或重新加载(reload=True)的情况,因此我们建议使用导入字符串样式。

rhfm7lfc

rhfm7lfc2#

如果您的文件名为handler.py,则字符串应为“handler:app”

相关问题