在GAE Local devserver中使用GCS

时间:2015-02-20 10:02:32

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

昨天,这个代码在本地服务器和生产服务器上运行良好:

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中,而不是在生产中。

感谢您的帮助

4 个答案:

答案 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