在龙卷风请求处理程序中,如果我必须调用函数foo()而不影响返回给用户的内容,则首先将结果返回给用户然后调用foo()是有意义的.龙卷风(或使用某些第三方包装)是否可以轻松完成此操作?
A. *_*vis 10
这非常简单:
class Handler(tornado.web.RequestHandler):
def get(self):
self.write('response')
self.finish() # Connection is now closed
foo()
Run Code Online (Sandbox Code Playgroud)
Pet*_*son -2
不,开箱即用并不“容易”。你指的是“即发即忘”。即使您使用线程池来分配请求,该线程池也将属于 Tornado 的主 python 进程。
最好的方法是消息队列。像胡萝卜之类的东西。这样,假设您有一个页面,用户可以在其中执行以开始生成巨大的报告,您可以在消息队列中启动它,然后完成 Tornado 请求,并使用一些 AJAX 魔法和其他技巧(在 Tornado 的范围之外),您可以坐下来等待消息队列完成其工作(从技术上讲,这可能发生在不同物理位置的分布式服务器上)。
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |