在GAE本地开发服务器中使用GCS

9

昨天这段代码在本地和生产服务器上都正常工作:

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 Launcher并更改了计费选项(之前使用的是免费试用,现在是付费账户)(不确定是否有关系,但只是提供额外信息)

但是今天代码在本地停止工作(在生产环境中工作正常)

以下是错误日志的开头

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"

警告显示了一个存储桶对象,但是当我尝试在列表中进行迭代时,就会在身份验证服务上出现异常。
发生了什么?似乎我需要授权本地devserver gcs mockup,但我不确定如何做。
请记住,这只发生在开发服务器中,而不是在生产环境中。
谢谢您的帮助。
4个回答

5

2

在dev_appserver中有一个已知的bug,即SDK无法处理早期版本中已经保存的凭据。对于我来说(在Ubuntu 15.10上,使用SDK 1.9.33),只需删除一个文件即可解决:

rm ~/.config/gcloud/application_default_credentials.json

根据Jari Wiklund提交的错误问题建议。

1
更新:截至2015年3月5日,在公共版本1.9.18中已经修复了此问题,这可能是获取修复程序的更简单的方法。
注意:虽然修复程序在Python中,但Java、PHP和Go也可能出现问题,因为它们使用Python本地开发服务器代码。

0

我相信问题的原因是最近发布的本地开发服务器(GoogleAppEngineLauncher)中存在一个错误。 我在PHP运行时遇到了类似的问题:GloudStorage fails locally


1
我已经提交了一个错误问题,指向这两个问题: https://code.google.com/p/googleappengine/issues/detail?id=11690&thanks=11690&ts=1424427830 - Jari Wiklund
我现在应该已经学会了,在完成项目之前不要升级 :( - unaiherran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接