我正在尝试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)
但是我希望此调用是 async ,因为后端可能需要10分钟才能完成它的工作。
所以我将上面的代码更改为:
url = backends.get_url('worker') + '/_ah/start'
rpc = urlfetch.create_rpc()
urlfetch.make_fetch_call(rpc, url)
然后后端没有启动。我对完成请求或从中获取任何数据不感兴趣。
我错过了什么 - 实施错误?
谢谢大家
答案 0 :(得分:2)
在不调用rpc对象的get_result()的情况下使用RPC进行异步调用将不会限制将调用urlfetch。一旦您的代码退出,未完成的待处理异步调用将被中止。
使处理程序异步的唯一方法是将代码排入推送队列。