成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何快速把你的 Python 代碼變為 API

開發 前端
Sanic,是 Python3.7+ Web 服務器和 Web 框架,旨在提高性能。它允許使用 Python3.5 中添加的 async/await 語法,這可以有效避免阻塞從而達到提升響應速度的目的。

提到 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七號
相關推薦

2021-11-17 21:58:02

Python編程語言

2011-03-04 14:39:32

Vsftpd啟動xinetd

2024-07-18 12:41:49

2023-03-31 08:25:08

零代碼開源項目

2025-03-11 08:30:00

Pythonretrying代碼

2024-08-13 08:56:22

2022-09-04 15:54:10

Node.jsAPI技巧

2013-03-25 09:41:20

PythonCython

2012-06-18 15:18:32

JS

2020-04-20 11:09:18

Python開發語言

2025-02-18 11:02:01

2018-07-19 16:50:53

2017-06-28 16:18:22

編程程序員開發

2018-03-30 10:02:08

代碼規范維護工程師

2023-09-04 10:10:47

插件頁面元素

2022-05-29 12:57:32

GNOMEUbuntu桌面

2024-05-23 11:26:02

2025-05-29 02:15:00

統計代碼行數

2020-01-06 15:00:43

Linux電腦發行版

2020-07-07 10:55:01

C++C語言代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91色网站| 久久久久久久久淑女av国产精品 | 一区二区三区在线观看免费视频 | 一区二区三区精品在线视频 | 国产精品二区三区在线观看 | 国产精品一区三区 | 成人免费视频7777777 | 欧美日韩黄色一级片 | 久久中文字幕一区 | 日韩一区二区福利视频 | 99久久婷婷国产亚洲终合精品 | 日韩二三区 | 亚洲国产精品久久久久 | 日韩精品久久久 | www.欧美.com| 成人欧美一区二区三区黑人孕妇 | 日韩欧美在线免费观看视频 | 999免费视频| 色视频www在线播放国产人成 | 国产玖玖 | 丝袜 亚洲 欧美 日韩 综合 | 国产精品永久免费视频 | 免费观看日韩av | 伊人免费视频二 | 一区二区三区av | 日韩免费高清视频 | 在线观看国产视频 | 国产二区三区 | 欧美一区二区免费视频 | 伊人久久成人 | 中文字幕国产精品 | 一区二区福利视频 | 欧美一级在线观看 | h片在线看| 亚洲日韩欧美一区二区在线 | 亚洲欧美中文字幕在线观看 | 91亚洲一区| 日韩在线播放视频 | 亚洲国产精品一区二区第一页 | 麻豆国产一区二区三区四区 | 亚洲成a |