阿里云函数计算支持 Python 运行环境

Posted 莫比嗨客MbhAi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云函数计算支持 Python 运行环境相关的知识,希望对你有一定的参考价值。

阿里云函数计算服务是一个事件驱动的全托管计算服务,自 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 的方式提供给别人使用。

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

代码如下:

import base64import loggingimport randomimport oss2from 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 大拿来玩!


以上是关于阿里云函数计算支持 Python 运行环境的主要内容,如果未能解决你的问题,请参考以下文章

无需修改代码,用 fcapp.run 运行你的 REST 应用

如何用阿里云函数计算结合API网关构建自己的serverless服务

阿里云 Centos7 部署 Django 项目

无需修改代码,用 fcapp.run 运行你的 REST 应用

阿里云环境locust环境搭建

在阿里云函数计算上部署.NET Core 3.1