gcs客户端库停止与dev_appserver一起使用

时间:2019-07-18 18:31:25

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

当我尝试通过开发服务器上载时,Google云存储客户端库返回500错误。

ServerError: Expect status [200] from Google Storage. But got status 500.

我对该项目没有做任何更改,并且代码在生产中仍然可以正常工作。

我已尝试gcloud components update获取最新的dev_server,并且已更新为最新的Google云存储客户端库。

我再次运行gcloud init以确保已加载凭据,并确保使用了正确的存储桶。

该项目正在Windows 10上运行。 Python 2.7版

知道为什么会这样吗?

谢谢

1 个答案:

答案 0 :(得分:0)

事实证明这已经有一段时间了。 它与blobstore文件名的生成方式有关。 https://issuetracker.google.com/issues/35900575

解决方法是猴子补丁此文件: google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ api \ blobstore \ file_blob_storage.py

def _FileForBlob(self, blob_key):
  """Calculate full filename to store blob contents in.

  This method does not check to see if the file actually exists.

  Args:
    blob_key: Blob key of blob to calculate file for.

  Returns:
    Complete path for file used for storing blob.
  """
  blob_key = self._BlobKey(blob_key)
  # Remove bad characters.
  import re
  blob_fname = re.sub(r"[^\w\./\\]", "_", str(blob_key))
  # Make sure it's a relative directory.
  if blob_fname and blob_fname[0] in "/\\":
    blob_fname = blob_fname[1:]
  return os.path.join(self._DirectoryForBlob(blob_key), blob_fname)