上云无忧 > 文档中心 > 百度智能云函数计算 CFC Python 示例
函数计算CFC
百度智能云函数计算 CFC Python 示例

文档简介:
目前支持的Python开发语言包括如下版本: Python2.7 Python3.6 函数代码 一个简单的Python函数代码如下所示: # -*- coding: utf-8 -*- def handler(event, context): return "Hello World"
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

目前支持的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): 则会将错误信息直接返回。
    如在控制台调用(同步调用),错误信息会直接在执行结果中显示,如下图所示:

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

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

  • 异步调用(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
相似文档
  • CFC 支持 Lua 编程语言,Lua 函数的运行环境是 Lua5.3,本文主要介绍使用 Lua 函数的基本方法。
  • 以下为一个最基本的hello world函数入口示例: 在创建CFC云函数时,需要指定执行方法。 普通方式:handler需要与创建函数时的 "handler" 字段相对应。例如,创建函数时指定的 "handler" 为 index.handler,函数计算则会加载 index.php 文件中定义的 handler 函数。
  • 目前CFC支持的Node.js开发语言包括如下版本: Node.js 12.2 Node.js 10.15 Node.js 8.5(已下线,目前存量Node.js 8.5函数仍可运行,但无法创建该运行时的新CFC函数) 函数代码 一个简单的Node.js函数示例代码如下所示: exports.handler = (event, context, callback) => { callback(null, "Hello world!"); };
  • BCE SAM是用来定义百度函数计算CFC无服务器应用架构的模型,为本地开发工具bce-sam-cli提供指引。BCE SAM定义了一组对象,这些对象可以包含在模板定义文件中,以便轻松地描述CFC函数。
  • BSAM CLI是一个基于BCE SAM规范的命令行工具,它提供了本地开发环境,帮助您在把函数上传到百度智能云CFC之前,在本地进行函数的开发、分析和执行。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部