龙卷风和ZeroMQ

时间:2014-05-22 02:55:24

标签: python tornado pyzmq

我一直在尝试按照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。这是包版本的错误组合吗?如果没有,那么新的做事方式是什么?

1 个答案:

答案 0 :(得分:1)

这看起来像过时的文档 - Tornado的IOLoop从未采用任何记录的参数,尽管ZMQ过去常常在早期版本的Tornado中使用未记录的参数。我认为使用install()函数应该可以在当前版本的Tornado中使用。我不确定如何以AsyncTestCase友好的方式使用ZMQ IOLoop。我认为在ZMQ代码库中有一个IOLoop的子类,你可以直接实例化。