V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rockuw
V2EX  ›  推广

阿里云函数计算支持 Python 运行环境,欢迎来玩

  •  
  •   rockuw · 2017-07-06 21:09:09 +08:00 · 5144 次点击
    这是一个创建于 2484 天前的主题,其中的信息可能已经有所发展或是发生改变。

    阿里云函数计算服务是一个事件驱动的全托管计算服务,自 4 月份发布以来,受到了很多开发者的关注。通过函数计算,开发者只需要编写函数代码,就能够快速地开发出弹性伸缩地 Serverless 应用。

    今天函数计算北京区域(华北 2)正式上线,同时推出了对 Python 语言的支持,开发者可以使用 Python 来编写函数。一个最简单的函数代码如下:

    def my_handler(event, context):
        return 'hello world'
    
    1. 函数名
      • my_handler需要与创建函数时的"Handler"字段相对应:例如创建函数时指定的 Handler 为main.my_handler,那么函数计算会去加载main.py中定义的my_handler函数
    2. event 参数
      • event 参数是用户调用函数时传入的数据,其类型是str
    3. context 参数
      • context 参数中包含一些函数的运行时信息(例如 request id/临时 AK 等)。其类型是FCContext,具体结构和使用在下面的使用 context介绍
    4. 返回值
      • 函数的返回值会作为调用函数的结果返回给用户,它可以是任意类型:对于简单类型会函数计算会把它转换成 str 返回,对于复杂类型会把它转换成 JSON 字符串返回

    更详细的介绍请参考Python 编程指南

    结合API 网关,开发者可以方便地将自己的函数以 HTTP 的方式提供给别人使用。

    下面是一个简单的图片拼接和旋转的例子

    fc-python-demo

    代码如下:

    import base64
    import logging
    import random
    
    import oss2
    from wand.image import Image
    
    TEMPLATE = open('/code/index.html').read()
    
    def my_handler(event, context):
        logger = logging.getLogger()
        logger.info('event: %s', event)
    
        creds = context.credentials
        auth = oss2.StsAuth(creds.accessKeyId, creds.accessKeySecret, creds.securityToken)
        bucket = oss2.Bucket(auth, 'oss-cn-shanghai-internal.aliyuncs.com', 'rockuw-sh-2')
    
        fc_obj = bucket.get_object('fc.png')
        py_obj = bucket.get_object('python.png')
    
        with Image(file=fc_obj) as fc_img:
            with Image(file=py_obj) as py_img:
                img = Image()
                img.blank(fc_img.width + py_img.width + 20, py_img.height)
                img.composite(image=fc_img, left=0, top=0)
                img.composite(image=py_img, left=fc_img.width+20, top=0)
                img.rotate(random.randint(0, 360))
                img_enc = base64.b64encode(img.make_blob(format='png'))
    
        resp = {
            'isBase64Encoded': False,
            'statusCode': 200,
            'body': TEMPLATE.replace('{fc-py}', img_enc)
        }
    
        return resp
    

    欢迎各位 Python 大拿来玩!

    参考:

    15 条回复    2017-12-14 06:46:45 +08:00
    ech0x
        1
    ech0x  
       2017-07-06 21:23:51 +08:00 via iPad
    看上去好酷。
    只支持计算服务吗?网络部分的计费是怎样的?库的支持呢?
    rockuw
        2
    rockuw  
    OP
       2017-07-06 21:29:08 +08:00 via iPhone
    @ech0x 目前是公测阶段不收费。我们内置了一些库,可以直接使用。你也可以把依赖的库跟代码一起打包进去就能使用。
    zuolan
        3
    zuolan  
       2017-07-06 23:33:09 +08:00
    FaaS ( Function as a Service ),多年以前,我完全没想到还有这种操作。。。。
    mlyy
        4
    mlyy  
       2017-07-07 00:08:45 +08:00 via iPhone
    @zuolan Google App Engine, Amazon Lambda 两个历史都挺久了。
    wzw
        5
    wzw  
       2017-07-07 07:16:29 +08:00
    华南 1 什么时候有
    jy02201949
        6
    jy02201949  
       2017-07-07 09:12:48 +08:00
    还是 2.7 啊,不习惯不习惯
    coolcoffee
        7
    coolcoffee  
       2017-07-07 09:36:57 +08:00 via iPhone
    征集🐁
    janxin
        8
    janxin  
       2017-07-07 10:14:13 +08:00 via iPhone
    @jy02201949 阿里云基本上都是 2 的吧… sdk 都只支持 2
    binfengxy
        9
    binfengxy  
       2017-07-07 10:18:14 +08:00
    请支持 3.4+
    rockuw
        10
    rockuw  
    OP
       2017-07-07 10:38:45 +08:00
    @jy02201949 @binfengxy python3.6 我们后面会支持
    rockuw
        11
    rockuw  
    OP
       2017-07-07 10:40:08 +08:00
    @wzw 其他区域会陆续上线,欢迎加入我们的用户群来交流: https://help.aliyun.com/document_detail/53087.html
    aiqinxuancai
        12
    aiqinxuancai  
       2017-07-08 11:14:33 +08:00
    函数能不能定时器触发...
    interlu1990
        13
    interlu1990  
       2017-07-08 11:51:02 +08:00
    @rockuw Hi,您好,我试了一下函数计算。我在本地打包了 Pillow 的 4.2.1,但是上传不能用,import 会出错。
    rockuw
        14
    rockuw  
    OP
       2017-07-08 14:50:51 +08:00
    @aiqinxuancai 定时器触发后面会支持的
    @interlu1990 参考 `https://help.aliyun.com/document_detail/56316.html?#adding-modules` 来添加依赖模块

    如果还有疑问,欢迎加入我们的用户群来交流: `https://help.aliyun.com/document_detail/53087.html`
    wzw
        15
    wzw  
       2017-12-14 06:46:45 +08:00
    @rockuw 华南节点还没有上呀. 目前开始收费没
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5434 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:11 · PVG 17:11 · LAX 02:11 · JFK 05:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.