所有文档

          函数计算 CFC

          Python


          目前支持的Python开发语言包括如下版本:

          • Python2.7
          • Python3.6

          函数代码

          一个简单的Python函数代码如下所示:

          # -*- coding: utf-8 -*-
          def handler(event, context): 
              return "Hello World"

          执行函数

          在创建CFC云函数时,需要指定执行方法。

          • 普通方式: 使用Python开发语言时,执行方法格式形如您函数中 "filename.handler-method" 的值,例如:填写 "index.handler",调用入口文件 index.py 中定义的 handler 方法。
          • ZIP包上传: 当使用本地上传.ZIP包或从BOS上传.ZIP等方法提交代码ZIP包时,ZIP包的根目录下需要包含指定的入口文件,入口文件中定义入口函数,且文件名和函数名要与执行入口函数名保持一致,否则会无法找到入口文件和入口函数而报错。

          输入

          • event: CFC使用此参数将触发事件数据传递到处理函数,此参数形式通常为Python dict类型。
          • context: CFC使用此参数向处理函数提供运行时信息,此参数形式通常为Python dict类型。

          输出

          在处理函数中您可以使用return来返回值,函数不同调用方式,对返回值的处理方式不同。

          • 同步调用(RequestResponse): 使用同步调用时,结果会以序列化的JSON格式返回, 调用方可以根据返回值进行后续处理。
          • 异步调用(Event): 异步调用时,调用方法触发函数后立即返回,所以,函数返回值会被丢弃。

          异常处理

          如果用户函数引发异常,则CFC会将异常信息序列化为JSON格式并返回。 如下所示:

          # -*- coding: utf-8 -*-
          
          def handler(event, context): 
              time.Sleep(5*time.Second)
              print("value1=" + event['key1'] )
              return event

          在调用此函数时,会引发异常,且返回如下错误信息:

          {
              "stackTrace": [
                  "  File \"/var/task/index.py\", line 4, in handler\n    time.Sleep(5*time.Second)\n"
              ], 
              "errorType": "NameError", 
              "errorMessage": "global name 'time' is not defined"
          }

          获取错误信息的方式取决于函数调用方式:

          • 同步调用(RequestResponse): 则会将错误信息直接返回。
            如在控制台调用(同步调用),错误信息会直接在执行结果中显示,如下图所示:

          python-1.png

          并且在函数监控页面也可以看到调用错误结果,如下图所示:

          python-2.png

          如果配置了日志存储路径,则可以在日志流详情中查看错误信息,如下图所示:

          python-3.png

          • 异步调用(Event): 则CFC不会返回任何信息,如果配置了日志存储路径,则错误信息会被记录到日志中,您可以在相应的日志文件中查看错误信息。

          日志

          您可以在程序中使用print或logging模块完成日志输出。如下代码所示:

          # -*- coding: utf-8 -*-
          import logging
          logging.basicConfig()
          logger = logging.getLogger()
          logger.setLevel(logging.INFO)
          def handler(event, context): 
              logger.info('event: %s', event)
              print(event)
              return "Hello World"

          输出内容您可以在函数日志中查看。

          依赖的第三方库

          使用CFC Python开发语言创建函数时,云端支持的库如下所示:

          Python3.6运行时支持的第三方库列表如下所示:

          库名称 版本
          baidu-aip 2.2.8.0
          certifi 2019.9.11
          chardet 3.0.4
          idna 2.8
          pip 9.0.1
          requests 2.22.0
          setuptools 36.6.0
          six 1.11.0
          urllib3 1.25.7
          websocket-client 0.44.0
          wheel 0.30.0

          Python2.7运行时支持的第三方库列表如下所示:

          库名称 版本
          baidu-aip 2.2.8.0
          certifi 2019.9.11
          chardet 3.0.4
          idna 2.8
          pip 9.0.1
          pycrypto 2.6.1
          requests 2.22.0
          setuptools 36.6.0
          six 1.11.0
          urllib3 1.25.7
          websocket-client 0.44.0
          wheel 0.30.0
          上一篇
          C#
          下一篇
          Lua