前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云函数Python依赖包安装,应用启动超时问题排查

云函数Python依赖包安装,应用启动超时问题排查

原创
作者头像
haimingli
修改2020-10-28 20:23:20
1.6K0
修改2020-10-28 20:23:20
举报
文章被收录于专栏:腾讯云中间件专家服务

背景

腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。 您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。

云函数(SCF)各个运行时已内置部分常用依赖库,可是我们使用的时候总是会依赖一些额外的第三方包,这种情况就需要自己安装并上传了。安装依赖包大部分情况下按照官方文档:https://cloud.tencent.com/document/product/583/47561#python是没有任何问题的,可是有些情况会存在native的so文件abi的问题,比如安装Python依赖库dlib的时候。

问题排查原因及解决方案

按照官方文档执行依赖包安装命令:

代码语言:javascript
复制
$ docker run -it --network=host -v /path/to/your-project:/tmp/your-project python:3.6.1 \ 
/bin/bash -c 'cd /tmp/your-project \
&& pip install boost \
&& pip install cmake \
&& pip install dlib -t .'

然后上传在云函数控制台页面上传代码及打包后的依赖:

编写测试代码,这里不做任何逻辑,直接引入dlib

代码语言:javascript
复制
# -*- coding: utf8 -*-
import json
import requests
import sys
import os
import dlib

# sys.path.append('/tmp')
# from mergeface import cv2
# print(os.system('ls'))
# os.system('pwd')
def main_handler(event, context):
    print("Received event: " + json.dumps(event, indent = 2)) 
    print("Received context: " + str(context))
    print("Hello world223")
    return("test dlib")

点击测试,直接报错了,初始化超时但是没有报任何异常信息:

原因分析

可能是native的so文件abi的问题,依赖安装文档有这样的说明:

由于本机的mac系统打的包,所以可能存在问题。

解决方案/最佳实践

构建一个centos7和Python3.6的环境重新安装依赖包即可,参考dockerfile如下:

代码语言:javascript
复制
FROM centos:centos7
WORKDIR /${your_path}

USER root

    
RUN

RUN yum install -y wget \
&& wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz \
&& yum -y install zlib-devel openssl-devel libffi-devel gcc make \
&& tar -xf /${your_path}/Python-3.6.1.tar.xz \
&& rm -rf /${your_path}/Python-3.6.1.tar.xz \
&& cd /${your_path}/Python-3.6.1/ \
&& ./configure \
&& make \
&& make install \
&& pip3 install --upgrade pip \
&& pip install boost \
&& pip install cmake \
&& rm -rf /${your_path}/Python-3.6.1/

然后基于该docker镜像重新打包安装依赖即可。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题排查原因及解决方案
  • 原因分析
  • 解决方案/最佳实践
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档