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的调用权.一旦您的代码退出,未完成的待处理异步调用将被中止.
使处理程序异步的唯一方法是将代码排入推送队列.
标签:python,asynchronous,google-app-engine,backend,urlfetch 来源: https://codeday.me/bug/20190704/1372389.html