搭建ASGI高性能web服务器FastAPI,python

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建ASGI高性能web服务器FastAPI,python相关的知识,希望对你有一定的参考价值。

搭建ASGI高性能web服务器FastAPI,python

(1)安装fastapi和uvicorn。

pip install fastapi

pip install uvicorn

(2)写一个测试服务器代码文件app_main.py:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    ret = 
        'code': 1,
        'msg': 'server ok'
    

    return ret

(3)在控制台用命令启动服务器:

uvicorn app_main:app --reload

此时会看到输出:

在浏览器打开127.0.0.1:8000输出:

修改app_main.py代码,实现一个简单的功能,抽取用户通过浏览器传递过来的参数:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    ret = 
        'code': 1,
        'msg': 'server ok'
    

    return ret


@app.get("/getuser/username")
async def index(username: str):
    ret = 
        'code': 100,
        'msg': f'hello,username'
    

    return ret

记得重启服务器。此时访问地址时候传入一个值:

fastapi自动生成设计的api文档

通过/docs访问:

也可以通过/redoc查看:

服务器启动的IP和端口

FastAPI(内部服务器uvicorn)启动时候指定IP地址和端口,需要指定--host参数和--port参数:

uvicorn app_main:app --host 0.0.0.0 --port 8080 --reload

参数查询

@app.get("/items/id")
def read_item(id: int = 0, query: str = '默认值'):
    return "id": id, "query": query

如果为query传入一个参数:

参数拼接&

@app.get("/sum/")
def sum_item(a: int = 0, b: int = 0):
    return "sum": a + b

python入口main函数启动fastapi

如果想以非控制台命令:

uvicorn app_main:app --reload

这样的方式启动fastapi,也可以用标准的python的入口main函数实现,但需要用uvicorn:

import uvicorn
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    ret = 
        'code': 1,
        'msg': 'server ok'
    

    return ret


if __name__ == '__main__':
    uvicorn.run(app=app, host="0.0.0.0", port=8080)

以上是关于搭建ASGI高性能web服务器FastAPI,python的主要内容,如果未能解决你的问题,请参考以下文章

FastAPI 1:安装FastAPI

FastAPI Web框架 [Pydantic]

FastAPI Web框架 [Pydantic]

FastAPI Web框架 [Pydantic]

FastAPI 源码阅读 (一) ASGI应用

fastapi异步web框架入门