Python Azure Function部署极慢,寻求缓存依赖及加速方案
加速Python Azure Functions部署的方案
一、缓存已安装依赖,避免全量重装
- 保留现有
.python目录:默认部署流程会删除旧的.python目录,你可以修改部署脚本(比如Azure CLI或CI脚本),跳过该目录的删除步骤。仅当requirements.txt有变更时,才重新执行依赖安装,否则直接复用已有的依赖目录。 - 配置pip本地缓存:在部署的pip安装命令中指定缓存目录,让重复依赖无需重新下载。示例命令:
# 先下载依赖到缓存目录 pip download -r requirements.txt -d /home/site/.pip-cache # 从缓存目录安装,不访问远程源 pip install --no-index --find-links /home/site/.pip-cache -r requirements.txt - 预先构建依赖包:在本地或CI环境中,提前构建适配Azure Linux运行时的依赖包(可使用Docker模拟Azure环境),将
.python目录打包后,部署时直接解压到/home/site/wwwroot,跳过在线安装步骤。也可以用func pack命令打包成zip包,部署时直接上传zip,减少服务器端的安装操作。
二、其他加速部署的技巧
- 精简依赖清单:检查
requirements.txt,移除未使用的包。比如darts依赖较多第三方库,确认是否全部用到;torch可进一步确认是否需要完整功能,尝试用更轻量的替代版本。 - 分层部署:将代码文件与依赖目录分离,仅在代码小幅改动时,同步更新代码文件(比如用Azure CLI的
az functionapp deployment source config-zip指定只上传代码文件),依赖目录保持不变。 - 使用部署槽:先部署到staging槽,验证无误后再切换到生产槽。部署槽之间可复用已缓存的依赖,同时避免部署过程影响生产服务。
- 升级服务计划:将Consumption计划切换为Premium或Dedicated计划,这类计划提供更充足的计算资源,能大幅缩短依赖安装和文件复制的时间。
- 优化pip下载源:在
requirements.txt顶部添加国内镜像源,加速包的下载速度,示例:-i https://pypi.tuna.tsinghua.edu.cn/simple azure-functions pyodbc sqlalchemy numpy==1.26.4 pandas -f https://download.pytorch.org/whl/torch_stable.html torch==2.2.0+cpu darts
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

