[issue18934] multiprocessing: use selectors module
Charles-François Natali
report at bugs.python.org
Fri Sep 6 08:57:40 CEST 2013
Charles-François Natali added the comment:
> Richard Oudkerk added the comment:
>
> I remember wondering at one time why EPOLLNVAL did not exist, and realizing that closed fds are just silently unregistered by epoll().
Exactly.
> I guess the issue is that some of the selectors indicate a bad fd on registration, and others do it when polled.
>
> On registration On poll
> ----------------------------------------------------------------
> SelectSelector No Raises OSError
> PollSelector No No (EVENT_READ or EVENT_WRITE)
> EpollSelector Raises OSError No
> KqueueSelector ? ?
Kqueue raises OSError upon registration. Not sure about poll().
> It would be easiest to relax the test, perhaps by just checking that conn.poll(0) raises or returns True.
That's what I think too. Apparently, the test was added for this
issue: http://bugs.python.org/issue3321
Basically, the goal was to check that conn.poll() wouldn't crash if
passed an invalid FD (which can happen if you register a FD greater
than FD_SETSIZE in a fd_set).
So relaxing the check would still make sense.
> Or maybe PollSelector.select() should raise OSError if POLLNVAL is indicated. That would match the behaviour of SelectSelector.select().
Yes, that would be a possibility. I'll have to give it some more thought.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue18934>
_______________________________________
More information about the Python-bugs-list
mailing list