我有一個帶有一些 pdf 檔案的 GCP 存盤桶。我可以使用以下代碼在本地主機上使用 python(flask) 從存盤桶下載檔案 -
storage_client = storage.Client.from_service_account_json("ebillaae7f0224519.json")
bucket = storage_client.get_bucket("bill_storage1")
blob = bucket.blob(file_name)
blob.download_to_filename("file1.pdf")
但是當部署在 GCP(應用程式引擎)上時,我收到此錯誤“第 1282 行,在 download_to_filename 中,打開(檔案名,“wb”)為 file_obj:OSError:[Errno 30] 只讀檔案系統:'file1.pdf'”然后我將代碼修改為 -
storage_client = storage.Client.from_service_account_json("ebillaae7f0224519.json")
bucket = storage_client.get_bucket("bill_storage1")
blob = bucket.blob(file_name)
blob.download_to_filename("/tmp/file1.pdf")
這在部署后有效,但我無法通過我的應用程式將檔案從存盤桶下載到本地檔案夾,該怎么做?
uj5u.com熱心網友回復:
部署后,您不能在 Google App Engine 的檔案系統中撰寫或進行修改。您只能讀取應用程式內的檔案。這就是為什么推薦使用某些存盤解決方案(例如 Cloud Storage 或任何資料庫)來存盤檔案或資料的原因。
Google App Engine是無服務器的。它可以快速擴展,因為它只是根據從源代碼和預構建運行時構建的容器映像來啟動實體。在部署期間構建容器映像后,您將無法再撰寫/編輯其內容。您必須重新部署才能進行更改。
一個例外是/tmp您可以在其中存盤臨時檔案的目錄。這是因為該目錄掛載在實體的 RAM 中。存盤臨時資料會消耗 RAM。因此,當實體被洗掉時,目錄中的/tmp檔案也被洗掉。
您可以查看此檔案以獲取更多資訊。
uj5u.com熱心網友回復:
您可以tempfile.gettempdir()根據您的運行時環境使用function 獲取 tmp 目錄
例如
import tempfile
storage_client = storage.Client.from_service_account_json("ebillaae7f0224519.json")
bucket = storage_client.get_bucket("bill_storage1")
blob = bucket.blob(file_name)
blob.download_to_filename("{}/file1.pdf".format(tempfile.gettempdir()))
在本地,該檔案將下載到您的作業系統默認臨時目錄中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/318997.html
上一篇:在GoogleCloudSDK上運行dev_appserver.py時提示“ImportError:Nomodulenamedpy27_urlquote”
