簡體   English   中英

如何從 requirements.txt 在 Google Cloud Functions 中安裝最新的庫版本

[英]How to install newest library version in Google Cloud Functions from requirements.txt

部署雲功能時,我假設 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。 同一雲函數的實例之間會出現庫版本不匹配的情況。

  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 將緩存之前的構建並且不會重新評估您的依賴項。 目前,您必須修改源文件以強制 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 庫會花費太多時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM