4

我正在尝试 GAE 的几个功能。

我已经构建了一个动态后端,但是在没有任务队列的情况下让这个东西工作时遇到了几个问题

后端代码:

class StartHandler(webapp2.RequestHandler):

    def get(self):
    #... do stuff...    

if __name__ == '__main__':
    _handlers = [(r'/_ah/start', StartHandler)]
    run_wsgi_app(webapp2.WSGIApplication(_handlers))

后端是动态的。因此,每当它接到一个电话时,它就会做它的东西,然后停止。

当我在我的处理程序中使用时,一切都很好:

url = backends.get_url('worker') + '/_ah/start'
urlfetch.fetch(url)

但我希望这个调用是异步的,因为后端可能需要长达 10 分钟才能完成它的工作。

所以我把上面的代码改成:

url = backends.get_url('worker') + '/_ah/start'
rpc = urlfetch.create_rpc()
urlfetch.make_fetch_call(rpc, url)

但是后端没有启动。我对完成请求或从中获取任何数据不感兴趣。

我错过了什么 - 实施错误?

谢谢你们

4

1 回答 1

2

使用 RPC 进行异步调用而不在 rpc 对象上调用 get_result() 将不会被授权调用 urlfetch。一旦您的代码退出,未完成的挂起异步调用将被中止。

使处理程序异步的唯一方法是将代码放入推送队列中。

于 2012-12-19T17:20:06.817 回答