阿里serverless函数计算HTTP触发器对接flask

先看啥是serverless

无服务器架构

假设您计划采购服务器开发一款短视频社交应用,那么您需要考虑很多的问题,例如:

  • 如何构建和运维一套弹性的稳定的视频处理后端服务?
  • 需要采购多少台服务器?
  • 服务器采用什么规格?
  • 如何配置网络和操作系统?
  • 如何部署环境?
  • 如何负载均衡?
  • 如何动态伸缩?
  • 如何升级配置?
  • 如何应对服务器宕机?
  • 如何应对用户请求峰值?
  • 如何应对系统监控报警?

这么多情况就是一个字——麻烦

服务的演化

serverless演化

当我们自己买机器搭建,就是物理机层。
之后我们可能买阿里云或者腾讯云的ECS服务器,就到了云计算层。这个时候我们已经不用考虑硬件方面的问题。但是还有运维方面的问题。
直到出现了serverless,我们只管写我们的代码,放上去。不需要考虑并发情况。不需要考虑cpu占用等等问题。他全解决了!美滋滋。
如果我们把搭建的服务比喻成开旅店:

服务 旅店
物理机 从盖大楼开始干
云计算 楼有了,从装修毛坯房开始干
容器 有公版的装修图(配置文件),可以安排别人把每个毛坯装修成一个样子
serverless 客人可直接拎包入住,你接待就行了

使用文档

阿里云serverless使用文档

Flask的部署

首先改代码

启动函数不再使用以下方式

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=15005, debug=False)

改为:

base_path=""
def handler(environ, start_response):
    parsed_tuple = urlparse(environ['fc.request_uri'])
    li = parsed_tuple.path.split('/')
    global base_path
    if not base_path:
        base_path = "/".join(li[0:5])
    context = environ['fc.context']
    environ['HTTP_HOST'] = '{}.{}.fc.aliyuncs.com'.format(context.account_id, context.region)
    environ['SCRIPT_NAME'] = base_path + '/'
    return app(environ, start_response)

假设你文件名为main.py,那么一会在填写触发函数的时候就写main.handler
因为他不是完全的python环境,所以还要安装包。
要将所有包装到本地文件夹,进入到项目目录下pip install -t . flask或者pip install -t . -r requirements.txt然后将整体放上去

阿里云新建服务

1、进入函数计算的控制台管理界面,点击新建服务

管理控制台

2、输入项目名、项目简介,点击确定
3、在新建服务那个位置,现在已经变成了新建函数,点击+!
4、选择语言,python3,选择空白模板。点击选择
5、
触发器配置

这个图里所写的验证的问题,已经解决,我会在最下面写解决方法。

6、基础信息自己定、代码配置选文件夹上传

image.png

7、然后直接点下一步然后创建就完事了。

调试及后续

调试

浏览器访问问题

他这里给的那个链接不能直接用,浏览器打开之后是直接把那个页面下载下来了,如果响应是json类型,打开页面也是直接下载了xxx.json
解决方案就是自定义域名。

使用签名认证

他的文档里没有python的代码,是一个js的。而且写的一点也不走心。
这里https://github.com/aliyun/fc-python-sdk/blob/master/fc2/auth.py
有认证的代码。

使用签名认证(更新内容)

虽然他自带了验证的功能,但是不能用自己的request写了需要用阿里提供的包。

from email.utils import formatdate
import requests
import email
import fc2
client = fc2.Client(
endpoint='https://xxxx.cn-hangzhou.fc.aliyuncs.com',
accessKeyID='xxxx',
accessKeySecret='xxxxxx')
path="/2016-08-15/proxy/test/test123/"
#headers = client._build_common_headers('GET',unescape(path),{}, {});
header = client._build_common_headers('GET',path,customHeaders={}, unescaped_queries=None);
print (header)
c=client.do_http_request('GET', 'test', 'test123', '/')
print(c.text)

实现灰度发布

通过这个进行版本管理
https://help.aliyun.com/document_detail/96464.html?spm=a2c4g.11186623.6.676.3c13886fTYhCV0

连接数据库

刚开始用是无权调用数据库的。因为有一个ip的白名单。而它不在里面。
使用专用网络,你要弄一个vpc网络。
这边参考:https://help.aliyun.com/knowledge_detail/72959.html?spm=a2c4g.11186623.6.670.4eff29e9WiAOYx

日志系统

他这里类似于自带一个ELT 的功能,还要一个日志仓库。

代码是否正常启动,是否存在异常

对路由发送一个请求,如果有错误,就会把错误当响应一样返回。

费用调查

每日调用次数 函数的内存规格 函数执行一次的时间 每日函数调用费用 (单位:元)
五万 1G 0.2S 1.18元

阿里云serverless先说到这,因为有一些还没测,所以此篇博客日后再完善

亚马逊的serverless

可以使用Zappa部署
https://github.com/Miserlou/Zappa

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356