fastapi如何使用http2

fastapi如何使用http2

以前fastapi支持的服务器只是uvicorn、但是现在我看官网上显示也支持了Hypercorn等。
Hypercorn是支持http2的,这里写一个教程,介绍如何使用fastapi和Hypercorn开启http2。

安装Hypercorn和fastapi

pip install hypercorn

pip install fastapi

写个脚本

创建一个python文件,文件名为:myapp.py, 内容如下:

from typing import Optional

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}

然后运行这个文件:

hypercorn myapp:app

然后查看上面的api的文档(在链接后面加上/doc就行):http://127.0.0.1:8000/docs

然后浏览器打开检查,就会发现我们当前的服务器依然是HTTP/1.1 。

原因是:http2是强制加密的,所以需要安装证书才行。

安装证书

运行这个命令即可

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

会让你输入很多信息,瞎写就行,然后就会在这个目录下生成两个文件:

有上面两个文件之后,再次开启服务。

再跑一次

hypercorn --keyfile key.pem --certfile cert.pem myapp:app

然后再查看上面的api的文档(在链接后面加上/doc就行):http://127.0.0.1:8000/docs。
这个时候打开chrome是访问不了的,提醒你“您的连接不是私密连接”。

这个时候只要在这个页面,然后键盘输入:thisisunsafe。 不是在地址栏输入,而是就在空页面输入,输入过程中没有任何反应,但是输入结束后,界面就刷新好了。

然后再打开网页检查,就能看到这个网页已经是http2了。

问题

问题1

Q:如何设置端口

A: hypercorn myapp:app --bind 0.0.0.0:8080

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuanzhoulvpi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值