【问题标题】:Google's 2-line blobstore upload example not workingGoogle 的 2 行 blobstore 上传示例不起作用
【发布时间】:2013-03-30 23:41:24
【问题描述】:

我知道有很多 blobstore 问题,但我已经回到最基本的情况,我被困住了!

从长远来看,我在带有 Google Cloud SQL 的 Google App Engine 上使用纯 Django,我想将文件上传到 Blobstore(但我无法上传文件)。

我正在尝试从 Google 的 Blobstore 概述 (https://developers.google.com/appengine/docs/python/blobstore/overview) 中运行以下示例

from google.appengine.ext import blobstore
upload_url = blobstore.create_upload_url('/upload')

但我得到以下信息:

$ python
Python 2.7.2+ (default, Jul 20 2012, 22:15:08) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<snip>/google_appengine_1.7.6/google/appengine/api/blobstore/blobstore.py", line 270, in create_upload_url
gs_bucket_name=gs_bucket_name)
File "<snip>/google_appengine_1.7.6/google/appengine/api/blobstore/blobstore.py", line 334, in create_upload_url_async
_get_result_hook, lambda rpc: rpc.response.url())
File "<snip>/google_appengine_1.7.6/google/appengine/api/blobstore/blobstore.py", line 223, in _make_async_call
rpc = create_rpc()
File "<snip>/google_appengine_1.7.6/google/appengine/api/blobstore/blobstore.py", line 217, in create_rpc
return apiproxy_stub_map.UserRPC('blobstore', deadline, callback)
File "<snip>/google_appengine_1.7.6/google/appengine/api/apiproxy_stub_map.py", line 405, in __init__
self.__rpc = CreateRPC(service, stubmap)
File "<snip>/google_appengine_1.7.6/google/appengine/api/apiproxy_stub_map.py", line 67, in CreateRPC
assert stub, 'No api proxy found for service "%s"' % service
AssertionError: No api proxy found for service "blobstore"

我回到了最基本的情况:Google App Engine SDK 1.7.6(目前最新)和 Python 2.7.2。

我的路径是这样的:

>>> from pprint import pprint as p
>>> p(sys.path)
['',
'<snip>/google_appengine_1.7.6',
'<snip>/google_appengine_1.7.6/lib',
'<snip>/google_appengine_1.7.6/lib/yaml-3.10',
'<snip>/google_appengine_1.7.6/lib/django-1.4',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7']

有趣的是,如果我在路径中仅使用基本 GAE 目录尝试此操作,我会得到:

ImportError: No module named yaml

这是否表明我在 SDK 中配置错误?

感谢您提供的任何东西!

【问题讨论】:

  • 您使用的确切命令行是什么?除非我遗漏了什么,否则我在上面看到的都是python。假设上面缺少 dev_appserver 调用,如果您使用 old_dev_appserver.py 而不是 dev_appserver.py,您会看到不同的行为吗?

标签: python google-app-engine sdk


【解决方案1】:

看起来你是在一个普通的 python 提示符下尝试这个。

你需要做一些严肃的工作才能让它工作(即,如果你是 appengine 的新手,我可能不会让它工作,自从它问世以来我一直在使用 appengine,我不会费心去尝试 ;- )。

如果你想使用 python shell,你应该使用 remote_api_shell,并连接到服务器(开发或生产应用程序引擎)并且你只是在探索。

您参考的文档中的代码片段是由应用引擎应用程序运行的代码,无论是在开发服务器下还是在生产中。

【讨论】:

  • 蒂姆,谢谢。这是我需要回到正确轨道上的那种概念性指导。现在我在我的开发服务器上使用 remote_api 来生成 blobstore 上传 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多