Chalice 1.26.2部署AWS后504超时本地运行正常问题求助
问题排查及解决步骤
核心问题1:模块导入错误
日志显示No module named 'crud'是最优先解决的问题,根因如下:
Chalice打包部署时只会将包含__init__.py的目录识别为Python包并打入部署包,你本地运行时当前项目目录会被自动加入Python模块搜索路径,所以可以正常导入chalicelib下的模块,但部署到Lambda后缺少__init__.py的chalicelib目录不会被打包,导致导入失败。
解决方法
在chalicelib目录下新建空的__init__.py文件,同时确认chalicelib下的crud.py、models.py、schemas.py等文件都存在,重新执行chalice deploy即可解决导入错误。
核心问题2:超时错误
导入问题解决后如果还有超时报错,按以下优先级排查:
- 全局初始化逻辑阻塞
你在app.py全局作用域执行了以下逻辑,这些逻辑会在Lambda冷启动阶段优先执行,任一环节阻塞都会导致函数超时:models.Base.metadata.create_all(bind=engine):每次冷启动都执行表结构创建完全没有必要,且如果数据库连接不通会直接卡住。建议将该逻辑移到本地执行的独立脚本中,不要放在Lambda运行时代码里。- 数据库连接初始化、Firebase Admin初始化:如果这两个服务的网络连通性有问题,会直接导致初始化超时。
- 网络配置问题
- 如果你的PostgreSQL数据库部署在AWS VPC内部,需要在
.chalice/config.json中为Lambda函数配置对应VPC的子网、安全组,且安全组要允许Lambda访问数据库的5432端口。 - 如果Lambda配置了VPC但没有配置NAT网关,会无法访问公网的Firebase服务,导致Firebase初始化超时,需要给VPC配置公网出口,或者将Firebase相关接口加入VPC端点(如果支持)。
- 如果你的PostgreSQL数据库部署在AWS VPC内部,需要在
- 超时配置不足
Chalice默认Lambda函数超时时间为30秒,你当前日志显示超时时间为60秒,若冷启动阶段初始化逻辑耗时较长,可以在.chalice/config.json中调整lambda_timeout参数到90秒,先保证初始化流程可以正常完成,后续再优化冷启动耗时。
其他说明
你使用的psycopg2-binary适配Lambda运行环境,不需要本地编译,不是问题根源,无需更换。
全局复用数据库连接的写法在Lambda运行环境下可能会出现连接失效的问题,建议后续调整为每次调用校验连接有效性,避免复用时出错。
内容的提问来源于stack exchange,提问作者Dirk
相关产品推荐
相关产品推荐

