在部署云功能时,我假设Google执行的功能相当于:
pip install -r requirements.txt
假设requirements.txt文件包含:
google-cloud-pubsub
google-cloud-storage==1.26.0由于指定了云存储版本,所有现有和未来的缩放功能实例都将安装该版本。
gcloud functions deploy ...将在所有实例上安装1.26.0存储库。
但是,假设已经安装了一个google-cloud-pubsub版本1.0.2的实例,最新版本为1.3.0。
上面的pip命令将而不是加载较新的版本。
相反,会有一个Requirement already satisfied响应。现有实例将保留在版本1.0.2上,而任何新缩放的实例都将使用1.3.0。同一云功能的实例之间将出现库版本不匹配的情况。
pip install -r requirements.txt发布于 2020-02-26 01:50:56
pip install -r requirements.txt?相当?
你是对的。在部署时,云函数构建一个映像,将依赖项和函数安装到其中,并使用它为您的函数服务。
我不确定我是否在准确地跟踪,但您似乎认为重复安装会重用相同的映像。它们不需要:每次您的源更改和部署时,它都会从头开始并执行上面的步骤。
这意味着,如果您解除依赖项(即没有==1.26.0),每次运行部署时,您都会得到这些项目的最新兼容版本。
注意:如果源文件没有更改,或者只是修改或添加环境变量,云函数将缓存上一次构建,不会重新评估您的依赖关系。当前,您必须修改源文件以强制云函数重新构建您的函数。
发布于 2020-04-05 09:56:26
我对此进行了测试,发现了与https://stackoverflow.com/a/60405672/1803897相反的地方
您必须在requirements.txt中指定较新的版本,以强制使用新的库。否则,将使用现有的库。
https://cloud.google.com/functions/docs/concepts/exec#multiple_functions没有说某些文件在创建新实例时不被重用。他们会拷贝一些文件,因为他们肯定不会为每个实例做一个新的完整安装。那要花太多的时间。对于python库,同样的点是有效的。在每次部署时安装所有python库需要花费太多的时间。
https://stackoverflow.com/questions/60405405
复制相似问题