Python 3.x Tornado asyncio tcp服务器抛出AttributeError:&x27_UnixSelectorEventLoop';

Python 3.x Tornado asyncio tcp服务器抛出AttributeError:&x27_UnixSelectorEventLoop';,python-3.x,tcp,tornado,python-asyncio,Python 3.x,Tcp,Tornado,Python Asyncio,我正在尝试使用Tornado和Asyncio构建tcp服务器。在《Tornado》一书中,他们说await和async应该可以替代Tornado.gen.coroutinedecorator,但我在启动这台服务器时遇到了问题。我做错了什么 from tornado.ioloop import IOLoop from tornado.tcpserver import TCPServer from tornado.iostream import StreamClosedError from torn

我正在尝试使用Tornado和Asyncio构建tcp服务器。在《Tornado》一书中,他们说
await
async
应该可以替代
Tornado.gen.coroutine
decorator,但我在启动这台服务器时遇到了问题。我做错了什么

from tornado.ioloop import IOLoop
from tornado.tcpserver import TCPServer
from tornado.iostream import StreamClosedError
from tornado.platform.asyncio import to_asyncio_future

class Server(TCPServer):

    async def handle_stream(self, stream, address):
        """Called when new IOStream object is ready for usage"""
        print('Incoming connection from %r', address)
        while True:
            try:
                message = await to_asyncio_future(stream.read_until('\n'.encode('utf8')))
                print("Message: ", message)
            except StreamClosedError:
                print("Good bye!!")
                break


if __name__ == "__main__":
    IOLoop.configure('tornado.platform.asyncio.AsyncIOLoop')
    server = Server(io_loop=IOLoop.current().asyncio_loop)
    server.listen(7000)
    IOLoop.current().start()
这就是错误:

Traceback (most recent call last):
  File "tornadoasyncioserver.py", line 41, in <module>
    server.listen(7000)
  File "/Users/user/tornadotcp/venv/lib/python3.5/site-packages/tornado/tcpserver.py", line 127, in listen
    self.add_sockets(sockets)
  File "/Users/user/tornadotcp/venv/lib/python3.5/site-packages/tornado/tcpserver.py", line 144, in add_sockets
    io_loop=self.io_loop)
  File "/Users/user/tornadotcp/venv/lib/python3.5/site-packages/tornado/netutil.py", line 275, in add_accept_handler
    io_loop.add_handler(sock, accept_handler, IOLoop.READ)
AttributeError: '_UnixSelectorEventLoop' object has no attribute 'add_handler'
回溯(最近一次呼叫最后一次):
文件“TornadAsyncIOServer.py”,第41行,在
服务器监听(7000)
文件“/Users/user/tornadotcp/venv/lib/python3.5/site packages/tornado/tcpserver.py”,第127行,在listen中
self.add_套接字(套接字)
文件“/Users/user/tornadotcp/venv/lib/python3.5/site packages/tornado/tcpserver.py”,第144行,在add_sockets中
io_循环=self.io_循环)
文件“/Users/user/tornadotcp/venv/lib/python3.5/site packages/tornado/netutil.py”,第275行,在add\u accept\u处理程序中
io_循环。添加_处理程序(sock、accept_处理程序、IOLoop.READ)
AttributeError:“\u UnixSelectorEventLoop”对象没有属性“add\u handler”

更改
服务器(io\u loop=IOLoop.current().asyncio\u loop)
服务器(io\u loop=IOLoop.current())
因为服务器等待IOLoop,而不是异步io循环本身。

更改
服务器(io\u loop=IOLoop.current().asyncio\u loop)
服务器(io\u loop=IOLoop.current())
因为服务器等待IOLoop,不是asyncio循环本身。

现在我遇到了这个错误
回溯(最近一次调用):File“/Users/user/tornadotcp/venv/lib/python3.5/site packages/tornado/tcpserver.py”,第271行,在_handle\u connection self.io\u循环中。添加_future(future,lambda f:f.result())文件“/Users/user/tornadontcp/venv/lib/python3.5/site packages/tornado/ioloop.py”,第589行,在add_future assert is_future(future)AssertionError/Users/user/tornadontcp/venv/lib/python3.5/site packages/tornado/netutil.py:274:RuntimeWarning:coroutine‘Server.handle_stream’从未等待回调(连接,地址)
这似乎与这个问题有关:现在我有了这个错误
回溯(最近一次调用):文件“/Users/user/tornadotcp/venv/lib/python3.5/site packages/tornado/tcpserver.py”,第271行,在_handle\u connection self.io\u循环中。添加_future(future,lambda f:f.result())文件”/Users/user/tornadotcp/venv/lib/python3.5/site packages/tornado/ioloop.py”,第589行,在add_future assert is_future(future)AssertionError/Users/user/tornadontcp/venv/lib/python3.5/site packages/tornado/netutil.py:274:RuntimeWarning:coroutine“Server.handle\u stream”从未等待回调(连接,地址)
这似乎与这个问题有关: