A funny little quirk has gotten me twice now ( hopefully it won’t be three times ).
In Twisted, once the generator has been called ( even inadvertently ) it becomes the defacto instance.
In PyZMQ, calling ioloop.IOLoop() creates a new loop ( and blows the old one away )… The correct approach is to always call it via
ioloop.IOLoop.Instance()
I don’t want to talk about how much time I wasted working out how to make a pyzmq like interface similar to Twisted’s inlineCallback, but it was enough!