每日速读!如何快速把你的 Python 代码变为 API
提到 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 写好的两个函数:
importdatetimedefget_datetime():returndatetime.datetime.now().strftime("%Y-%m-%d%H:%M:%S")defsum_x_y(x,y):returnx+y
转化为 API 只需再编写一个 sanic_app.py :
fromsanicimportSanic,jsonfromfunctionsimportget_datetime,sum_x_yapp=Sanic("CodeToAPI")HOST="localhost"PORT=8000@app.route("/getdatetime")asyncdefgetdatetime(request):returnjson({"now":get_datetime()})@app.get("/sumxy")asyncdefsumxy(request):parameters=request.argsresult=sum_x_y(int(parameters["x"][0]),int(parameters["y"][0]))returnjson({"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-2506:34:25"}%❯curl"http://localhost:8000/sumxy?x=12&y=34"{"result":46}%
如果用 post,且使用 json 传参,也是简单的:
@app.post("/sumxy")asyncdefsumxy(request):parameters=request.jsonprint(parameters)result=sum_x_y(int(parameters["x"]),int(parameters["y"]))returnjson({"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:
gunicornmyapp:app--bind0.0.0.0:1337--worker-classsanic.worker.GunicornWorker
静态文件的处理,及记录请求访问日志,又想获得更好的性能,可以考虑使用 Nginx 作为代理,让 Nginx 来处理访问日志和静态文件,这种方式要比用 Python 处理快得多得多。
最后的话本文分享了下一代的 Python Web 框架 Sanic,直接支持异步,且内置生产级别的 Web 服务器,可以说是编写 API 相当快的工具了,如果有帮助,还请点赞、在看、转发,也欢迎留言讨论。
参考资料[1]Sanic: https://github.com/sanic-org/sanic
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...