【问题标题】:Using GAE remote api for debugging from localhost - Connecting too late?使用 GAE 远程 api 从 localhost 进行调试 - 连接太晚了?
【发布时间】:2012-09-17 06:54:36
【问题描述】:

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

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

守则:

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

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?

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

非常感谢!

【问题讨论】:

  • 您是否在 HTTP 获取处理程序中使用了 remote_api?
  • 您可能希望在服务器启动时初始化远程 api 一次,而不是在每次请求时初始化一次。
  • @dragonx - 这听起来更好。你现在应该把它放在 GAE 代码的什么地方吗?
  • 可能在您的应用启动和您初始化 webapp 的任何地方。

标签: python google-app-engine webapp2 remoteapi


【解决方案1】:

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

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2013-11-25
    相关资源
    最近更新 更多