1

尝试使用 Google App Engine remote_api,以便我们可以通过 IDE 进行逐行调试。

远程 api 一开始效果很好。该应用程序能够成功地从数据库中检索信息。当 wepapp 响应客户端浏览器时发生错误。

编码:

它与应用引擎文档中给出的示例非常相似:

from model import My_Entity
from google.appengine.ext.remote_api import remote_api_stub

# Test database calls
def get(w_self):
    remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func, 'myapp.appspot.com')

    t_entity = My_Entity.get_by_key_name('the_key')

    w_self.response.set_status(200)

    # The error occurs AFTER this code executes, when webapp actually responds to the browser

错误回溯:

该错误似乎与 blobstore 有关。

远程 api 在代码中初始化是否为时已晚?

...在 webapp 通过 localhost 服务器对 blobstore 进行处理之后?那么远程api可能会将请求重定向到服务器中的blobstore,而不是webapp期望的localhost调试服务器?

回溯(最近一次通话最后):
  _HandleRequest 中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py”,第 2795 行
    登录网址)
  CreateImplicitMatcher 中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py”,第 3622 行
    get_blob_storage)
  CreateUploadDispatcher 中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_blobstore.py”,第 420 行
    返回 UploadDispatcher()
  __init__ 中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_blobstore.py”,第 307 行
    get_blob_storage())
  GetBlobStorage 中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_blobstore.py”,第 79 行
    返回 apiproxy_stub_map.apiproxy.GetStub('blobstore').storage
AttributeError:“RemoteStub”对象没有属性“存储”

远程 api 是否应该在代码中的其他地方初始化?

还是这个问题与其他问题有关?

非常感谢!

4

1 回答 1

0

要使其正常工作,您可以使用测试平台的帮助来启动缺少的存根:

ADDRESS=....
remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func, ADDRESS)

# First, create an instance of the Testbed class.
myTestBed = testbed.Testbed()

# Then activate the testbed, which prepares the service stubs for use.
myTestBed.activate()

# Next, declare which service stubs you want to use.
myTestBed.init_blobstore_stub()
myTestBed.init_logservice_stub()
于 2013-07-22T12:44:34.677 回答