尝试使用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调试服务器?
Traceback(最近一次通话最后一次):文件"C:\Program Files(x86)\Google\appengine\Google\appengine \tools\dev_appserver.py",第2795行,在_HandleRequest中login_url)文件"C:\Program Files(x86)\Google\appengine\Google\appengine \tools\dev_appserver.py",第3622行,在CreateImplicitMatcher中get_blob_storage)文件"C:\Program Files(x86)\Google\appengine\Google\appengine \tools\dev_appserver_blobstore.py",第420行,在CreateUploadDispatcher中return UploadDispatcher()文件"C:\Program Files(x86)\Google\appengine\Google\appengine \tools\dev_appserver_blobstore.py",第307行,位于__init__get_blob_storage())GetBlobStorage中的文件"C:\Program Files(x86)\Google\appengine\Google\appengine \tools\dev_appserver_blobstore.py",第79行return apiproxy_stub_map.apiproxy.GetStub('lobstore').storageAttributeError:"RemoteStub"对象没有属性"storage">
是否应该在代码中的其他地方初始化远程api?
还是这个问题与其他事情有关?
非常感谢!
要实现这一点,您可以使用测试台的帮助来启动丢失的存根:
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()