提到 API 开发,你可能会想到 Django REST Framework,Flask,FastAPI,没错,它们齐全能够用来编写 API,不过,明天分享的这个框架能够让你更快把现有的函数转化为 API,它就是 Sanic。
Sanic 简介
Sanic[1],是 Python3.7+ Web 服务器和 Web 框架,旨在进步性能。它容许应用 Python3.5 中增加的 async/await 语法,这能够无效防止阻塞从而达到晋升响应速度的目标。Sanic 致力于提供一种简略且疾速,集创立和启动于一体的办法,来实现一个易于批改和拓展的 HTTP 服务,Sanic 具备开箱即用的性能,它能够用于编写,部署和扩大生产级 Web 应用程序。目前 Github 有 16.3k 的星,有宽泛的社区反对。
有以下个性:
- 内置极速 web server
- 生产准备就绪
- 极高的拓展性
- 反对 ASGI
- 简略直观的 API 设计
- 社区保障
如何将现有代码疾速转化为 API
当初让咱们看,如何将代码转为 API,如果有曾经在 functions.py 写好的两个函数:
import datetime
def get_datetime():
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def sum_x_y(x, y):
return x + y
转化为 API 只需再编写一个 sanic_app.py
from sanic import Sanic, json
from functions import get_datetime, sum_x_y
app = Sanic("CodeToAPI")
HOST = "localhost"
PORT = 8000
@app.route("/getdatetime")
async def getdatetime(request):
return json({"now": get_datetime()})
@app.get('/sumxy')
async def sumxy(request):
parameters = request.args
result = sum_x_y(int(parameters['x'][0]), int(parameters['y'][0]))
return json({'result': result})
if __name__ == "__main__":
app.run(host=HOST, port=PORT, debug=False)
而后,只须要执行 python sanic_app.py 就能够启动 API 服务:
从运行后果能够得悉,sanic 曾经运行在生产环境模式,这与其余 Web 框架不同,其余框架带有一个内置的开发服务器,并明确示意它只用于开发。而 Sanic 的状况恰好相反,内置的服务器能够间接用于生产环境。
能够用 curl 进行接口测试:
❯ curl "http://localhost:8000/getdatetime"
{"now":"2022-07-25 06:34:25"}% ❯ curl "http://localhost:8000/sumxy?x=12&y=34"
{"result":46}%
如果用 post,且应用 json 传参,也是简略的:
@app.post('/sumxy')
async def sumxy(request):
parameters = request.json
print(parameters)
result = sum_x_y(int(parameters['x']), int(parameters['y']))
return json({'result': result})
curl 这样测试:
❯ curl -X 'POST' 'http://localhost:8000/sumxy' -H "Content-Type: application/json" -d '{"x":10,"y":20}'
{"result":30}%
部署在其余
Sanic 除了自带的服务器(大多数状况举荐自带的服务器用于生产),同样兼容 ASGI。这意味着您能够应用你喜爱的 ASGI 服务器来运行 Sanic。当初有三大支流的 ASGI 服务器,Daphne、Uvicorn (FastAPI 用的就是这个)、Hypercorn。
也能够部署在 Gunicorn:
gunicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker
动态文件的解决,及记录申请拜访日志,又想取得更好的性能,能够思考应用 Nginx 作为代理,让 Nginx 来解决拜访日志和动态文件,这种形式要比用 Python 解决快得多得多。
最初的话
本文分享了下一代的 Python Web 框架 Sanic,间接反对异步,且内置生产级别的 Web 服务器,能够说是编写 API 相当快的工具了,
最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回“Python 编程学习圈 ”,发送“J”即可收费取得