您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

如何快速把你的 Python 代码变为 API

2024/3/25 18:32:05发布27次查看
提到 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 代码变为 api的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product