[英]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。 同一雲函數的實例之間會出現庫版本不匹配的情況。
pip install -r requirements.txt
?
- 我是否准確理解了這個過程? GCP 是否相當於
pip install -r requirements.txt?
你是對的。 在部署時,Cloud Functions 會構建一個映像,將您的依賴項和您的函數安裝到其中,並使用它來為您的函數提供服務。
- 有沒有辦法強制雲函數在部署期間通過 requirements.txt 或其他方式導入最新版本的庫?
我不確定我是否完全遵循,但您似乎認為重復安裝會重復使用相同的圖像。 它們不會:每次您的源更改和部署時,它都會從頭開始並執行上述步驟。
這意味着如果您取消固定您的依賴項(即沒有==1.26.0
),您每次運行部署時都將始終獲得這些項目的最新兼容版本。
注意:如果您的源文件沒有更改,或者您只是修改或添加環境變量,Cloud Functions 將緩存之前的構建並且不會重新評估您的依賴項。 目前,您必須修改源文件以強制 Cloud Functions 重建您的函數。
我對此進行了測試,發現與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.