【问题标题】:GCP App Engine: OSError: [Errno 30] Read-only file system:GCP App Engine:OSError:[Errno 30] 只读文件系统:
【发布时间】:2020-12-09 02:26:31
【问题描述】:

我已在 GCP 应用引擎上部署了一个烧瓶应用,用于将文件上传到 GCP 存储桶存储,然后在需要时从存储中下载文件。但是,当我尝试从云存储下载文件时遇到错误 OSError: [Errno 30] Read-only file system:。我可以从部署在应用程序引擎上的应用程序正确上传文件,并且验证文件已上传,但是当我尝试从网站下载时出现错误。任何想法将不胜感激?

从桶中下载文件的代码

 storage_client = storage.Client()

 bucket = storage_client.bucket(bucket_name)
 blob = bucket.blob(source_blob_name)
 blob.download_to_filename(destination_file_name)

PS:我正在使用 google-cloud-storage==1.33.0

【问题讨论】:

  • 听起来您尝试写入下载文件的目的地是只读的。
  • @JohnGordon 感谢您的评论!您能否提供有关如何将其下载到特定文件夹的指导?我尝试使用 os.path 指定文件夹路径,但出现另一个错误:(
  • 通常的方法是使用f = open("/some/path/to/filename", "w"),然后使用f.write(content)
  • 不,这也无济于事..仍然是同样的错误
  • 您是想将文件下载到您的应用程序还是一个和用户?如果对于您的应用程序,那么下面的答案虽然有效,但如果文件不大,也可以考虑将 BytesIO 用于内存文件。如果是最终用户,那么您可以向用户提供一个链接,以便直接从云存储下载它并绕过您的应用。

标签: python google-app-engine google-cloud-storage


【解决方案1】:

App Engine 中没有可写硬盘,如果您需要写入临时文件,请使用/tmp 文件夹,如here 所述。不要忘记删除它以释放系统的 RAM,否则它会在某些时候崩溃。

【讨论】:

  • 非常感谢!现在至少我的应用程序按预期工作,我可以继续我的工作了!但只是好奇我是否通过我的应用程序引擎将文件上传到云存储,并且我能够成功地通过应用程序引擎上托管的应用程序将这些文件下载回来?
  • 我不确定我是否理解这个问题,您是否尝试打开文件而不先保存它?然后你可以试试download_as_bytes 方法。
猜你喜欢
  • 2020-07-01
  • 2020-05-19
  • 2018-10-05
  • 2022-06-23
  • 2013-06-19
  • 2021-06-19
  • 1970-01-01
  • 2022-11-23
  • 2018-04-09
相关资源
最近更新 更多