我一直在尝试按照Eventloops and PyZMQ中的代码,特别是以下代码:
from tornado.ioloop import IOLoop
from zmq.eventloop.ioloop import ZMQPoller
loop = IOLoop(ZMQPoller())
我正在尝试这个,我得到了这个例外:
Traceback (most recent call last):
File "C:\Users\ACaron\Desktop\develop\spectator\site\lib\site-packages\tornado\testing.py", line 170, in setUp
self.io_loop = self.get_new_ioloop()
File "C:\Users\ACaron\Desktop\develop\spectator\tests\test_agent.py", line 16, in get_new_ioloop
return IOLoop(ZMQPoller())
TypeError: __new__() takes exactly 1 argument (2 given)
查看documentation for Tornado's I/O loop,我可以看到,IOLoop
类构造函数确实不接受参数。
我猜测Tornado中有一些API更改。我正在使用PyZMQ 14.3.0和Tornado 3.2.1。这是包版本的错误组合吗?如果没有,那么新的做事方式是什么?
答案 0 :(得分:1)
这看起来像过时的文档 - Tornado的IOLoop从未采用任何记录的参数,尽管ZMQ过去常常在早期版本的Tornado中使用未记录的参数。我认为使用install()函数应该可以在当前版本的Tornado中使用。我不确定如何以AsyncTestCase友好的方式使用ZMQ IOLoop。我认为在ZMQ代码库中有一个IOLoop的子类,你可以直接实例化。