def test_client_disconnect(self):
"""Issue #95 Server must handle disconnect from client in the middle of response
"""
def long_response(environ, start_response):
start_response('200 OK', [('Content-Length', '9876')])
yield b'a' * 9876
server_sock = eventlet.listen(('localhost', 0))
self.server_addr = server_sock.getsockname()
server = wsgi.Server(server_sock, server_sock.getsockname(), long_response,
log=self.logfile)
def make_request():
sock = eventlet.connect(server_sock.getsockname())
sock.send(b'GET / HTTP/1.1\r\nHost: localhost\r\n\r\n')
sock.close()
request_thread = eventlet.spawn(make_request)
client_sock, addr = server_sock.accept()
# Next line must not raise IOError -32 Broken pipe
server.process_request([addr, client_sock, wsgi.STATE_IDLE])
request_thread.wait()
server_sock.close()
评论列表
文章目录