首页 > 其他分享 >Serverless经验积累

Serverless经验积累

时间:2023-01-26 11:12:12浏览次数:42  
标签:Serverless 积累 经验 框架 Web Flask app __ 调试

1. Web框架与阿里云函数计算

由于阿里云函数计算拥有HTTP函数的优势,传统的Web框架部署到阿里云函数计算是非常方便的。

对于Bottle和Flask这类的框架,从用户请求到框架本身,可以分为三个过程,分别是Web Server、Wsgi,以及开发者所实现的方法,如下所示。

 

WSGI Web框架原理简图

针对Bottle和Flask等框架,可以进行如下的操作,以Flask代码为例:

# index.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_world():    return 'Hello, World!'

函数计算的配置如图11-59所示。

 

图11-59 阿里云函数计算配置页面

也就是说,只需要把函数入口写成:文件名.Flask对象的变量名。

同理,当有一个Bottle项目时,也可以用类似的方法:

# index.py import bottle @bottle.route('/hello/<name>') def index(name):    return "Hello world" app = bottle.default_app()

此时,函数入口只需要是:文件名.默认App的变量名,即index.app。

正是由于这种设计,该项目的管理系统(基于Flask的项目)的部署非常轻松。

2. 如何进行本地调试

Serverless架构有一个备受争议的问题:如何进行本地调试?

其实在这个项目开发过程中,我们的调试方案是比较简单直接的,虽然不一定适用于所有场景,但是在大部分场景中都值得一试。

对于Web框架的项目,调试方法就是直接把框架在本地启动,然后进行调试。例如在本项目中,同步接口直接通过Bottle的run方法来进行的调试,即在本地启动一个Web服务。

对于非Web框架,调试方法则是在本地构建一个方法,例如要调试对象存储触发器,调试方案是:

import json def handler(event, context):    print(event) def test():    event = {        "events": [            {                "eventName": "ObjectCreated:PutObject",                "eventSource": "acs:oss",                "eventTime": "2017-04-21T12:46:37.000Z",                "eventVersion": "1.0",                "oss": {                    "bucket": {                        "arn": "acs:oss:cn-shanghai:123456789:bucketname",                        "name": "testbucket",                        "ownerIdentity": "123456789",                        "virtualBucket": ""                    },                    "object": {                        "deltaSize": 122539,                        "eTag": "688A7BF4F233DC9C88A80BF985AB7329",                        "key": "image/a.jpg",                        "size": 122539                    },                    "ossSchemaVersion": "1.0",                    "ruleId": "9adac8e253828f4f7c0466d941fa3db81161****"                },                "region": "cn-shanghai",                "requestParameters": {                    "sourceIPAddress": "140.205.***.***"                },                "responseElements": {                    "requestId": "58F9FF2D3DF792092E12044C"                },                "userIdentity": {                    "principalId": "123456789"                }            }        ]    }    handler(json.dumps(event), None) if __name__ == "__main__":    print(test())

这样,我们在实现handler方法的时候,通过不断地运行该文件来进行调试,也可以根据自身的需求对Event等内容进行定制化的调整。

 

标签:Serverless,积累,经验,框架,Web,Flask,app,__,调试
From: https://www.cnblogs.com/muzinan110/p/17067625.html

相关文章

  • 开发一个Serverless应用
    通过Serverless架构建立一个函数,并输出了HelloWorld,表明已经完成Serverless架构的初体验。接下来,我们以其中一个云厂商为例(例如阿里云)进行基础的小工具开发和建设,帮助读者......
  • Serverless架构下的前后端一体化
    天下大势,分久必合,合久必分。其实,技术的发展也遵循此规律。以Web应用的前后端为例,从前后端一体化到前后端分离,是为了解决高可用、高并发的问题;从前后端分离到前后端一体化,则......
  • Serverless工作流程
    在实际生产中,Serverless架构通常都是FaaS与BaaS的结合,并且具备弹性伸缩和按量付费的特性。如下所示,当开发者想要开发一个项目的时候,通常只需要根据FaaS提供商所提供的Runti......
  • 有哪些老程序员都知道对新程序员很有用的经验
    回想起自己刚步入职场的时候,接到任务的心态就是尽快搞完,只要没做完就怕耽误了整个团队,还怕领导觉得自己能不行,怕被开除等等。但是每次完成之后,都有错误,编译通过了,逻辑又有问......
  • Sonic 云真机平台部署经验
    工作中遇到了这样的场景,一名测试人员需要对多台移动设备进行回归测试,如何提高测试效率呢?那肯定离不开自动化啦,那有没有现成的开源工具可以支持移动端的自动化呢?有,sonic!......
  • 阿里云张建锋:核心云产品全面 Serverless 化
    11 月 3 日,2022 杭州·云栖大会上,阿里云智能总裁张建锋表示,以云为核心的新型计算体系正在形成,软件研发范式正在发生新的变革,Serverless是其中最重要的趋势之一,阿里云......
  • 深度 | 新兴软件研发范式崛起,云计算全面走向 Serverless 化
    作者:杨皓然11 月 3 日,2022 杭州·云栖大会上,阿里云智能总裁张建锋表示,以云为核心的新型计算体系正在形成,软件研发范式正在发生新的变革,Serverless是其中最重要的趋势......
  • Serverless平台建设
     函数管理一般开源引擎都会自带部分的函数管理能力,比如通过CLI的方式来对函数进行CRUD,也有一些引擎框架也集成了部分的Console操作能力。但不管是可视化界面还是C......
  • Serverless可观测性
     整体解决方案 指标确定指标对于使用函数计算的用户而言,更关心的是业务逻辑,因此,常用的用户侧函数监控指标会包括以下几种:函数的总执行次数;函数的平均执行耗时;......
  • Serverless日志处理
    任何单一云产品所提供的业务解决方案都是有限的,而云服务生态下“互相打通、互相连接”的能力,在很大程度上是业务上云的关键。通常会根据实现方式,把函数计算的连接能力分为......