当我尝试通过开发服务器上载时,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版
知道为什么会这样吗?
谢谢
答案 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)