快速将python函数生成API

什么是Sanic

Sanic,是Python3.7+ Web服务器和Web框架,旨在提高性能。它允许使用Python3.5中添加的async/await语法,这可以有效避免阻塞从而达到提升响应速度的目的。Sanic致力于提供一种简单且快速,集创建和启动于一体的方法,来实现一个易于修改和拓展的HTTP服务,Sanic具备开箱即用的功能,它可以用于编写,部署和扩展生产级Web应用程序。

有以下特性:

  • 内置极速 web server
  • 生产准备就绪
  • 极高的拓展性
  • 支持 ASGI
  • 简单直观的 API 设计
  • 社区保障

示例

funtions.py

1
2
3
4
5
6
7
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

sanic_app.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from sanic import Sanic, json
from funtions 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})

# 如果用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})

if __name__ == "__main__":
app.run(host=HOST, port=PORT, debug=False)

然后,只需要执行python sanic_app.py就可以启动API服务。
从运行结果可以得知,sanic已经运行在生产环境模式,这与其他Web框架不同,其他框架带有一个内置的开发服务器,并明确表示它只用于开发。而Sanic的情况恰好相反,内置的服务器可以直接用于生产环境。