python – 在Google App Engine上使用async urlfetch启动后端

我正在试验几个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)

但后来没有开始后端.我对完成请求或从中获取任何数据不感兴趣.

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

谢谢你们

解决方法:

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

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

上一篇:HAproxy简介


下一篇:最简单安全的Android服务器后端