0
我已经阅读了龙卷风ioloop
和相关模块,以了解当套接字被接受并且请求被解析和处理时龙卷风会做什么。龙卷风在处理处理程序时如何处理远程关闭连接?
我想知道在请求连接关闭后龙卷风是否可以停止请求处理?
我建立一个测试处理机,所述get
方法花费5秒睡眠(time.sleeo(5))。
然后我发送一些龙卷风的请求,所有的请求都设置为读取超时3秒,我在龙卷风和几分钟后发现了一些close_wait
连接,这些连接正常关闭。
我猜5秒处理程序是减慢龙卷风的事件循环,当龙卷风处理第二个处理程序,其连接已关闭,如果龙卷风知道,它不需要做下一步。
谢谢Ben!我还有两个问题。 1.我的处理程序被写为阻塞,我知道这会阻止ioloop。我在执行处理程序之前检查了'socket'状态:在标有'MSG_PEEK'的那个'socket'上调用'recv',如果我得到空字符串我认为连接已经被远程关闭了,如果我得到了EAGAIN或EWOULDBLOCK异常我知道连接是活着的,这对我适合吗? 2.我想记录每个连接的接受时间,我添加了'accept_handler'的日志,但是我发现每个日志输出都是一个接一个的,我认为它们应该同时出现。 – dawncold
如果您一次只提供一个连接即可,MSG_PEEK技巧可能会有效,但请记住,有时会检测到关闭连接需要很长时间*。我不明白你的第二个问题(最好把新问题当作新问题而不是评论)。 –