引言
最近尝试了一下阿里云的函数计算,整体感觉很好,主要是省钱!下面就简单聊一下,如何将 Python Flask 的 web 项目迁移至函数计算。
创建一个银行卡校验的 RestAPI
文件名:index.py
代码:
# -*- coding: utf-8 -*-
from flask import request, jsonify, Flask
from fishbase.fish_data import CardBin
app = Flask(__name__)
@app.route("/")
def bankcard_check():
req_param = request.args
try:
bankcard = req_param["bankcard"]
except KeyError as _:
res_error = {"error": "银行卡号为空"}
return jsonify(res_error), 400
is_true = CardBin.check_bankcard(bankcard)
result_desc = "银行卡校验通过" if is_true else "银行卡校验失败"
return jsonify({"result": result_desc})
if __name__ == "__main__":
app.run()
这里银行卡校验的功能,用到了一个很好的 Python 函数包 fishbase ,里面还有很多很多好用的东西。
安装依赖:
pip install -t . flask fishbase
通过这种方式安装依赖,会把所有的依赖包下载到当前目录,如下:
启动服务:
# 通过 Python 直接启动
python index.py
# 或者通过 gunicorn 启动
gunicorn index:app
本地测试(以 gunicorn 启动为例,默认端口 8000):
至此,我们已经在本地创建了一个“银行卡校验的” RestAPI ,接下来我们把这个 API 迁移至阿里云函数计算
创建函数计算服务
这里就不过多介绍,参考阿里云官网文档即可,详见:https://help.aliyun.com/document_detail/74756.html
- 创建服务
- 创建函数 ( python3,空白模板)
- 创建 HTTP 触发器
- 配置函数入口
- 权限配置(直接“下一步”)
- 信息核对
- 创建
- 在线调试
费用说明
参考 https://help.aliyun.com/document_detail/54301.html
- 调用次数费用
- 执行时间费用
- 网络费用为标准费用(同 ECS 等)。
示例:
假设一个函数每次调用的平均时间为 0.1 秒,占用的内存为 128MB, 调用 100 万次的费用约为 2.7185元
免费额度
参考: https://help.aliyun.com/document_detail/54301.html#Free
总结
费用低,改造成本较低,对于 Python Flask 的纯 API 项目(含所有依赖包,总工程 50M 以内的),无需做任何改造即可使用函数计算服务。