tornado.tcpserver.TCPServer.stop
的文档说:
服务器停止后,当前正在进行的请求可能仍会继续
但是,为了测试健壮性,我想模拟服务器的完全崩溃。
是否有一种首选方式可以突然终止tornado.TCPServer?特别是我想终止所有打开的套接字 ungracefully 。
所以我不认为stop
完全终止现有的连接。以下代码打印1, 2
from tornado import gen
from tornado.ioloop import IOLoop
from tornado.tcpserver import TCPServer
from tornado.tcpclient import TCPClient
port = 9000
class Server(TCPServer):
@gen.coroutine
def handle_stream(self, stream, address):
while True:
bytes = yield stream.read_bytes(5)
yield stream.write(bytes)
server = Server()
server.listen(port)
@gen.coroutine
def client():
client = TCPClient()
stream = yield client.connect('127.0.0.1', port)
yield stream.write(b'Hello')
result = yield stream.read_bytes(5)
assert result == b'Hello'
print(1)
server.stop()
yield stream.write(b'Hello')
result = yield stream.read_bytes(5)
assert result == b'Hello'
print(2)
IOLoop.current().run_sync(client)
答案 0 :(得分:1)
TCPServer.stop
完全符合您的要求;您引用的注释是TCPServer
没有尝试正常关闭的警告。