在 GAE 本地开发服务器中使用 GCS
Using GCS in GAE Local devserver
昨天这段代码在本地和生产服务器上都运行良好:
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模型,但我不确定如何。
记住这只发生在开发服务器中,而不是生产中。
感谢您的帮助
我相信问题的原因是最近发布的本地开发服务器 (GoogleAppEngineLauncher) 中的错误。
我在 PHP 运行时遇到类似的情况:GloudStorage fails locally
这是最新版本 (1.9.18) 的问题。现在,在它得到修复之前,您可以通过从此处下载安装程序来降级到 1.9.17,只需 运行 它:https://storage.googleapis.com/appengine-sdks/featured/GoogleAppEngineLauncher-1.9.17.dmg
根据下面的回答,1.9.18 已针对此问题进行了修补。如果你还想安装1.9.17版本,请按照这个link:https://storage.googleapis.com/appengine-sdks/deprecated/1917/GoogleAppEngineLauncher-1.9.17.dmg
更新:截至 2105 年 3 月 5 日,此问题已在 1.9.18 的 public 版本中修复,这可能是获得修复的更简单方法。
注意:虽然在 Python 中进行了修复,但在 Java、PHP 和 Go 中也会出现问题,因为它们使用 Python 本地开发服务器代码。
这是 dev_appserver 中的一个已知错误,其中 SDK 无法处理早期版本中已保留的凭据。对我来说(在 Ubuntu 15.10 和 SDK 1.9.33 上)它有助于简单地删除一个文件:
rm ~/.config/gcloud/application_default_credentials.json
如 Jari Wiklund 提交的 bug issue 中所建议。
昨天这段代码在本地和生产服务器上都运行良好:
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模型,但我不确定如何。
记住这只发生在开发服务器中,而不是生产中。
感谢您的帮助
我相信问题的原因是最近发布的本地开发服务器 (GoogleAppEngineLauncher) 中的错误。 我在 PHP 运行时遇到类似的情况:GloudStorage fails locally
这是最新版本 (1.9.18) 的问题。现在,在它得到修复之前,您可以通过从此处下载安装程序来降级到 1.9.17,只需 运行 它:https://storage.googleapis.com/appengine-sdks/featured/GoogleAppEngineLauncher-1.9.17.dmg
根据下面的回答,1.9.18 已针对此问题进行了修补。如果你还想安装1.9.17版本,请按照这个link:https://storage.googleapis.com/appengine-sdks/deprecated/1917/GoogleAppEngineLauncher-1.9.17.dmg
更新:截至 2105 年 3 月 5 日,此问题已在 1.9.18 的 public 版本中修复,这可能是获得修复的更简单方法。
注意:虽然在 Python 中进行了修复,但在 Java、PHP 和 Go 中也会出现问题,因为它们使用 Python 本地开发服务器代码。
这是 dev_appserver 中的一个已知错误,其中 SDK 无法处理早期版本中已保留的凭据。对我来说(在 Ubuntu 15.10 和 SDK 1.9.33 上)它有助于简单地删除一个文件:
rm ~/.config/gcloud/application_default_credentials.json
如 Jari Wiklund 提交的 bug issue 中所建议。