部署方法
腾讯云云函数提供以下几种方式部署函数,您可以按需选择使用。创建、更新函数操作详情可参见 创建及更新函数。通过 zip 打包上传部署,详情可参见 依赖安装和部署。通过控制台编辑和部署,详情可参见 通过控制台部署函数。使用命令行部署,详情可参见 通过 Serverless Cloud Framework 部署函数。
依赖安装和部署
当前的函数标准 Python Runtime 中仅提供了 /tmp
目录可写,其他目录只读,因此在用到依赖库时,需要使用本地安装、打包、上传的方式。Python 依赖包通常可以与函数代码一同上传,或上传至层中,然后绑定使用。
本地安装依赖包
依赖管理工具
Python 可以通过 pip 包管理器进行依赖管理。由于环境配置不同,可自行将 pip
替换为 pip3
或 pip2
。
使用方法
1. 在 requirements.txt
中配置依赖信息。2. 通过在代码目录下执行 pip install -r requirements.txt -t .
命令安装依赖包。通过使用 -t
参数,可以指定依赖包的安装目录,在项目代码目录下执行时,可以使用 -t .
安装在当前目录下。注意您可以使用 pip freeze > requirements.txt
生成当前环境下所有依赖的 requirements.txt
文件。函数运行的系统是 CentOS 7,您需要在相同环境下进行安装。若环境不一致,则可能导致上传后运行时出现找不到依赖的错误。您可参考 云函数容器镜像 进行依赖安装。若部分依赖涉及动态链接库,则需手动复制相关依赖包到依赖安装目录后再打包上传。详情请参阅 使用 Docker 安装依赖。
示例
1. 在本地安装 requests
依赖,其中代码文件 index.py
如下所示:
# -*- coding: utf8 -*-import requests
def main_handler(event, context): addr = "www.qq.com" resp = requests.get(addr) print(resp) return resp
2. 使用 pip3 install requests -t .
在项目当前目录安装 requests
依赖。代码文件如下所示:
$ pip3 install requests -t .Collecting requests Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB)Collecting certifi>=2017.4.17 Using cached certifi-2020.12.5-py2.py3-none-any.whl (147 kB)Collecting chardet=3.0.2 Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB)Collecting idna=2.5 Using cached idna-2.10-py2.py3-none-any.whl (58 kB)Collecting urllib3=1.21.1 Using cached urllib3-1.26.4-py2.py3-none-any.whl (153 kB)Installing collected packages: urllib3, idna, chardet, certifi, requestsSuccessfully installed certifi-2020.12.5 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.4
$ ls -ltotal 8drwxr-xr-x 3 xxx 111 96 4 29 16:45 bindrwxr-xr-x 7 xxx 111 224 4 29 16:45 certifidrwxr-xr-x 8 xxx 111 256 4 29 16:45 certifi-2020.12.5.dist-infodrwxr-xr-x 44 xxx 111 1408 4 29 16:45 chardetdrwxr-xr-x 9 xxx 111 288 4 29 16:45 chardet-4.0.0.dist-infodrwxr-xr-x 11 xxx 111 352 4 29 16:45 idnadrwxr-xr-x 8 xxx 111 256 4 29 16:45 idna-2.10.dist-info-rw-r--r--@ 1 xxx 111 177 4 29 16:33 index.pydrwxr-xr-x 21 xxx 111 672 4 29 16:45 requestsdrwxr-xr-x 9 xxx 111 288 4 29 16:45 requests-2.25.1.dist-infodrwxr-xr-x 17 xxx 111 544 4 29 16:45 urllib3drwxr-xr-x 10 xxx 111 320 4 29 16:45 urllib3-1.26.4.dist-info
打包上传
依赖可以和项目一同上传,并在函数代码中通过 import
方式引入和使用。同时,依赖也可以打包部署为层,并通过在函数创建部署时,与函数绑定,提供复用能力。您可以通过控制台选择本地文件夹的方式自动化打包,也可以通过手工打包的方式形成可以用于部署函数或层的 zip 包。在打包部署时,需要注意的是均在项目目录下进行打包操作,即确保代码、依赖均在 zip 文件内的根目录中。详情可参见 打包要求。
特殊依赖包
部分 Python 的依赖包,在安装时需要进行相关的编译操作,例如 pycryptodome
依赖。由于编译程序会根据不同 OS 进行操作系统相关的编译操作,在 Windows、Mac 等环境下编译生成的依赖库及动态库等程序,可能无法在云函数的环境中运行。您可通过以下方案尝试解决:寻找针对 FaaS 的开源实现,使用开源实现已经准备好的依赖库。在 SCF 公共 Layer 项目中寻找依赖或提交需求,本项目用于常用特殊依赖包的整理和存储,并以 Layer 形式提供部署支持。通过使用容器方案及 SCF 容器镜像,在本地完成特殊依赖包安装和内容抽取后,打包上传至代码运行环境中。
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/149666.html