日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何快速把你的Python代碼變?yōu)锳PI

提到 API 開發(fā),你可能會(huì)想到 Django REST Framework,F(xiàn)lask,F(xiàn)astAPI,沒錯(cuò),它們完全可以用來編寫 API,不過,今天分享的這個(gè)框架可以讓你更快把現(xiàn)有的函數(shù)轉(zhuǎn)化為 API,它就是 Sanic。

高唐ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

Sanic 簡(jiǎn)介

Sanic[1],是 Python3.7+ Web 服務(wù)器和 Web 框架,旨在提高性能。它允許使用 Python3.5 中添加的 async/await 語法,這可以有效避免阻塞從而達(dá)到提升響應(yīng)速度的目的。Sanic致力于提供一種簡(jiǎn)單且快速,集創(chuàng)建和啟動(dòng)于一體的方法,來實(shí)現(xiàn)一個(gè)易于修改和拓展的 HTTP 服務(wù),Sanic 具備開箱即用的功能,它可以用于編寫,部署和擴(kuò)展生產(chǎn)級(jí) Web 應(yīng)用程序。目前 Github 有 16.3k 的星,有廣泛的社區(qū)支持。

有以下特性:

  • 內(nèi)置極速 web server
  • 生產(chǎn)準(zhǔn)備就緒
  • 極高的拓展性
  • 支持 ASGI
  • 簡(jiǎn)單直觀的 API 設(shè)計(jì)
  • 社區(qū)保障
  • 如何將現(xiàn)有代碼快速轉(zhuǎn)化為 API

現(xiàn)在讓我們看,如何將代碼轉(zhuǎn)為 API,假如有已經(jīng)在 functions.py 寫好的兩個(gè)函數(shù):

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

轉(zhuǎn)化為 API 只需再編寫一個(gè) 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)

然后,只需要執(zhí)行 python sanic_app.py 就可以啟動(dòng) API 服務(wù):

從運(yùn)行結(jié)果可以得知,sanic 已經(jīng)運(yùn)行在生產(chǎn)環(huán)境模式,這與其他 Web 框架不同,其他框架帶有一個(gè)內(nèi)置的開發(fā)服務(wù)器,并明確表示它只用于開發(fā)。而 Sanic 的情況恰好相反,內(nèi)置的服務(wù)器可以直接用于生產(chǎn)環(huán)境。

可以用 curl 進(jìn)行接口測(cè)試:

 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 傳參,也是簡(jiǎn)單的:

@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 這樣測(cè)試:

 curl -X 'POST' 'http://localhost:8000/sumxy' -H "Content-Type: application/json" -d '{"x":10,"y":20}'
{"result":30}%

部署在其他

Sanic 除了自帶的服務(wù)器(大多數(shù)情況推薦自帶的服務(wù)器用于生產(chǎn)),同樣兼容 ASGI。這意味著您可以使用你喜歡的 ASGI 服務(wù)器來運(yùn)行 Sanic?,F(xiàn)在有三大主流的 ASGI 服務(wù)器, Daphne、Uvicorn (FastAPI 用的就是這個(gè))、Hypercorn。

也可以部署在 Gunicorn:

gunicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker

靜態(tài)文件的處理,及記錄請(qǐng)求訪問日志,又想獲得更好的性能,可以考慮使用 Nginx 作為代理,讓 Nginx 來處理訪問日志和靜態(tài)文件,這種方式要比用 Python 處理快得多得多。


新聞標(biāo)題:如何快速把你的Python代碼變?yōu)锳PI
分享鏈接:http://www.dlmjj.cn/article/dpechpp.html