我已阅读龙卷风ioloop
和相关模块,以了解龙卷风在接受套接字并解析和处理请求时会做什么。
我想知道龙卷风是否有可能在请求连接关闭后停止请求处理?
我构建了一个测试处理程序,get
方法花费5秒钟进行休眠(time.sleeo(5))。
然后我向龙卷风发送一些请求,所有请求都设置为读取超时3秒,我在龙卷风上发现了一些close_wait
连接,几分钟后,这些连接正常关闭。
我猜5秒处理程序是龙卷风的事件循环,当龙卷风处理第二个处理程序时,它的连接已经关闭,如果龙卷风知道,它不需要做下一步。
答案 0 :(得分:0)
不要在Tornado应用程序中使用time.sleep()
;请参阅this question了解原因。
当处理程序的耗时部分是非阻塞时,您可以定义一个方法on_connection_close()
,该方法将在连接关闭时调用。通过此方法,您可以取消正在进行的工作。您必须自己实施取消,例如在self.cancelled = True
中设置on_connection_close
,然后在正在进行的异步工作期间定期检查此属性。