Hey,<br><br><br><br>I'm running into trouble using zmq.select instead of select.select. The end goal is to get something based on select (specifically, twisted) to be able to read from ZMQ sockets as well as plain old file descriptors. In a naive attempt to get that to work, I tried this:<br>
<br><a href="http://bpaste.net/show/5455/">http://bpaste.net/show/5455/</a><br><br>So, I started investigating. Consider the following Python function, in _zmq.pyx: <a href="http://paste.pocoo.org/show/201079/">http://paste.pocoo.org/show/201079/</a><br>
<br>The sockets list, used as an argument to _poll, is clearly an iterable of things that can live in {r,w,x}list, so, either:<br>    - zmq.Socket<br>    - int (an fd)<br>    - object implementing fileno returning an int<br>
<br>However, _poll says in its docstring that its sockets argument should be a list of tuples of (socket, flags). Look at its implementation (<a href="http://paste.pocoo.org/show/201080/">http://paste.pocoo.org/show/201080/</a>, sorry, no syntax highlighting -- I couldn't find a pastebin that does that for Cython), specifically lines 22 and 23. It appears that _poll isn't lying in its docstring, so it appears that select isn't feeding it what it wants.<br>
<br>This results in the following problem if I try to use select-using code, but select.select replaced with zmq.select:<br><br><a href="http://bpaste.net/show/5455/">http://bpaste.net/show/5455/</a><br><br>The problem is that in the two aforementioned lines, _zmq.pyx tries to do sockets[i][0], but sockets[i] is just an integer (specifically, a fd)<br>
<br>What am I missing? The obvious fix of appending (s, flags) instead just seems a tad *too* obvious. Is zmq.select even supposed to work like this?<br><br>tia<br>lvh<br>