FastAPI 如何使用FastAPI和uvicorn在Python中同时运行HTTP和HTTPS
在本文中,我们将介绍如何使用FastAPI和uvicorn在Python中同时运行HTTP和HTTPS。
阅读更多:FastAPI 教程
FastAPI简介
FastAPI是一个基于Python的现代、快速(高性能)的web框架。它具有简单易用、高效和可靠的特点,而且支持异步编程。FastAPI基于最新的Python标准—asyncio实现,这使得它在处理高并发请求时非常高效和可靠。
uvicorn简介
Uvicorn是一个基于Python的ASGI(异步服务器网关接口)服务器。它是一个非常快速的ASGI服务器,开发者普遍认为它是FastAPI的首选服务器。Uvicorn使用uvloop库来加速事件循环,这使得它在处理大量并发请求时具有出色的性能。
运行HTTP服务器
要在本地运行FastAPI的HTTP服务器,我们需要在项目的根目录中创建一个Python文件,例如main.py
,并添加以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
在上面的示例中,我们创建了一个FastAPI的实例app
,并定义了一个HTTP GET请求处理函数read_root
。当访问根路径时,该函数会返回一个JSON响应。然后,我们使用uvicorn.run
方法启动HTTP服务器,将FastAPI应用作为参数传递给它。通过指定host
和port
参数,我们可以将服务器绑定到本地地址127.0.0.1的8000端口。
要运行HTTP服务器,我们可以在命令行中执行以下命令:
uvicorn main:app --reload
这将启动HTTP服务器并监听8000端口。--reload
表示在修改了代码之后自动重新加载服务器。
运行HTTPS服务器
要在本地运行FastAPI的HTTPS服务器,我们需要生成一个自签名的SSL证书,并将证书文件添加到项目目录中。我们可以使用以下命令生成一个自签名的SSL证书:
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
运行以上命令后,会在当前目录下生成cert.pem
和key.pem
文件。注意,这里生成的是自签名证书,仅用于测试和开发,正式环境需要使用受信任的证书。
修改main.py
文件,添加以下代码来运行HTTPS服务器:
from fastapi import FastAPI
import ssl
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000, ssl_keyfile="key.pem", ssl_certfile="cert.pem")
在上面的示例中,我们使用ssl
模块加载SSL证书。然后,我们将ssl_keyfile
和ssl_certfile
参数分别设置为key.pem
和cert.pem
,以将SSL证书文件与HTTPS服务器相关联。
要运行HTTPS服务器,我们可以在命令行中执行以下命令:
uvicorn main:app --reload
这将启动HTTPS服务器并监听8000端口。我们可以在浏览器中访问https://127.0.0.1:8000/
来查看HTTPS服务器的响应。
请注意,浏览器会显示站点不安全的警告,因为我们使用的是自签名的证书。在生产环境中,应使用受信任的CA证书来确保安全连接。
总结
通过本文,我们了解了如何使用FastAPI和uvicorn在Python中同时运行HTTP和HTTPS服务器。FastAPI提供了一个现代、高效和易用的框架,而uvicorn作为FastAPI的首选服务器,为我们提供了高性能的ASGI服务器的能力。通过简单的配置和代码修改,我们可以轻松启动和管理HTTP和HTTPS服务器,以满足不同的开发和部署需求。希望本文对您有所帮助!