如何从requirements.txt在Google Cloud Functions中安装最新的库版本



当部署云功能时,我认为谷歌执行了一些等效的功能:

pip install -r requirements.txt

假设requirements.txt文件包含:

google-cloud-pubsub
google-cloud-storage==1.26.0

由于指定了云存储版本,所有现有和未来扩展的功能实例都将安装该版本。

gcloud functions deploy ...将在所有实例上安装1.26.0存储库。

然而,假设有一个实例已经安装了google-cloud-pubsub1.0.2版本,并且最新版本是1.3.0。

上面的pip命令将不会加载新版本。

取而代之的是Requirement already satisfied响应。现有实例将停留在1.0.2版本,而任何新扩展的实例都将退出1.3.0版本。同一个云函数的实例之间的库版本可能不匹配。

  1. 我是否准确地理解了这个过程?GCP的作用相当于pip install -r requirements.txt
  2. 有没有办法在部署期间通过requirements.txt或其他方式强制云函数导入库的最新版本
  1. 我能准确理解这个过程吗?GCP的作用相当于pip install -r requirements.txt?

你是对的。在部署时,Cloud Functions会构建一个映像,将您的依赖项和功能安装到其中,并使用它来服务于您的功能。

  1. 是否有办法在部署期间通过requirements.txt或其他方式强制云函数导入库的最新版本

我不确定我是否准确地遵循了,但你似乎认为重复安装会重用同一个映像。它们不会:每次更改源代码并进行部署时,它都会从头开始并执行上面的步骤。

这意味着,如果取消绑定依赖项(即没有==1.26.0(,则每次运行部署时,都会获得这些项目的最新兼容版本。

注意:如果您的源文件没有更改,或者您只是在修改或添加环境变量,Cloud Functions将缓存以前的构建,并且不会重新评估您的依赖关系。目前,您必须修改源文件才能强制云函数重新生成您的函数。

  1. 是否有办法在部署期间通过requirements.txt或其他方式强制云函数导入库的最新版本

我对此进行了测试,发现与https://stackoverflow.com/a/60405672/1803897

您必须在requirements.txt中指定更新的版本强制使用更新的库。否则将使用现有库。

https://cloud.google.com/functions/docs/concepts/exec#multiple_functions并没有说明在创建新实例时不重用某些文件。他们会复制一些文件,因为他们肯定不会为每个实例进行新的完整安装。那将花费太多时间。关于python库,同样的观点也是有效的。在每次部署时安装所有python库将花费太多时间。

相关内容

  • 没有找到相关文章

最新更新