You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Amazon CLI部署Python脚本至Lambda的痛点及超时问题求助

解决方案:Lambda函数超时及Python3.7依赖适配问题

针对超时问题的直接优化

  • 调整Lambda超时时间:默认3秒不足以支撑yfinance拉取金融数据的网络请求,在Lambda控制台或通过CLI修改函数配置,将超时时间设置为10-30秒(根据实际数据量调整)。
  • 提升内存配置:Lambda的CPU资源与内存配额正相关,128MB内存下CPU性能受限,建议将内存提升至256MB或512MB,既能加快代码执行速度,也能压缩初始化和运行时长。

依赖与部署优化

  • 重新校验依赖包兼容性:确认yfinance和pymysql的降级版本完全适配Python3.7,比如yfinance指定yfinance==0.1.70(该版本支持3.7),pymysql用pymysql==1.0.2。避免安装不必要的冗余依赖,减少Layer体积。
  • 替换CloudShell打包环境:CloudShell的Python3.7环境可能存在编译依赖问题,建议本地使用Amazon Linux 2镜像或Docker模拟Lambda运行环境打包依赖:
    1. 拉取Lambda镜像:docker pull public.ecr.aws/lambda/python:3.7
    2. 运行容器并安装依赖:
      docker run -v "$PWD":/var/task public.ecr.aws/lambda/python:3.7 bash -c "pip install yfinance==0.1.70 pymysql==1.0.2 -t python/lib/python3.7/site-packages/"
      
    3. 压缩打包后上传S3创建Layer,确保依赖是针对Lambda环境编译的。
  • 改用容器镜像部署:放弃Layer模式,直接将代码和依赖打包成Docker镜像上传至ECR,再创建Lambda函数。这种方式可以使用更高版本的Python(如3.9/3.10),既解决Python3.7的兼容性限制,也能提升代码运行性能。

代码逻辑优化

  • 复用网络连接:yfinance内部依赖requests,可在代码中复用Session对象减少连接建立时间;pymysql连接尽量复用(注意Lambda冷启动和连接泄露问题,可在函数结束时关闭连接)。
  • 减少不必要的数据拉取:yfinance默认拉取全量数据,可通过参数指定时间范围或所需字段,降低数据传输和处理耗时。
  • 异步处理(可选):如果业务允许,使用asyncio结合aiohttp替代同步请求,并行拉取数据提升效率。

网络排查

  • 如果Lambda函数部署在VPC内,必须配置NAT网关确保函数能访问外网(yfinance需要调用Yahoo Finance的API);若无需VPC,直接使用默认的公网访问模式即可。

内容的提问来源于stack exchange,提问作者ZKK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:41:32