昨天,这个代码在本地服务器和生产服务器上运行良好:
import cloudstorage
def filelist(Handler):
gs_bucket_name="/bucketname"
list=cloudstorage.listbucket(gs_bucket_name)
logging.warning(list)
self.write(list)
for e in list:
self.write(e)
self.write("<br>")
从昨天到今天,我已升级GAE启动器并更改了结算选项(我使用的是免费试用版,现在是付费帐户)(不确定是否有任何操作,只是为了提供额外信息)
但今天代码停止在本地工作(在生产中工作正常)
这是错误日志的开头
WARNING 2015-02-20 09:50:21,721 admin.py:106] <cloudstorage.cloudstorage_api._Bucket object at 0x10ac31e90>
ERROR 2015-02-20 09:50:21,729 api_server.py:221] Exception while handling service_name: "app_identity_service"
method: "GetAccessToken"
request: "\n7https://www.googleapis.com/auth/devstorage.full_control"
request_id: "WoMrXkOyfe"
警告显示了一个存储桶对象,但是一旦我尝试在列表中进行迭代,我就会在身份服务上获得异常。
什么是hapening?似乎我需要授权本地devserver gcs模型,但我不确定如何。
请记住,这只发生在devserver中,而不是在生产中。
感谢您的帮助
答案 0 :(得分:5)
这是最新版本(1.9.18)的问题。目前,在修复之前,您可以通过从此处下载安装程序并仅运行它来降级到1.9.17:https://storage.googleapis.com/appengine-sdks/featured/GoogleAppEngineLauncher-1.9.17.dmg
根据下面的答案,1.9.18已经修补了这个问题。如果您仍想安装1.9.17版本,请点击以下链接:https://storage.googleapis.com/appengine-sdks/deprecated/1917/GoogleAppEngineLauncher-1.9.17.dmg
答案 1 :(得分:2)
这是dev_appserver中的一个已知错误,其中SDK无法处理早期版本中已保留的凭据。对我来说(在Ubuntu 15.10和SDK 1.9.33上),它只是删除了一个文件:
rm ~/.config/gcloud/application_default_credentials.json
正如Jari Wiklund提交的bug issue所建议的那样。
答案 2 :(得分:1)
更新:自2105年3月5日起,这已在1.9.18的公开发布中得到修复,这可能是获得修复的更简单方法。
注意:虽然修复程序是在Python中,但问题可能出现在Java,PHP和Go中,因为它们使用Python本地开发服务器代码。
答案 3 :(得分:0)
我确实认为问题的原因是最近发布的本地开发服务器(GoogleAppEngineLauncher)中的错误。 我在PHP运行时遇到类似的事情:GloudStorage fails locally