[Python-Dev] Another 2.4 asyncore headache (original) (raw)

Jeremy Hylton jhylton at gmail.com
Sat Aug 14 19:54:06 CEST 2004


On Sat, 14 Aug 2004 00:37:49 -0400, Tim Peters <tim.peters at gmail.com> wrote:

More generally, in 2.3.4 it didn't hurt to leave all kinds of crap in the socket map, provided that any such crap didn't call itself ready to read or ready to write. select() would never see it then. In 2.4, select() always sees it. That's a big change, particularly because everyone I've seen wrestling with asyncore works via iterative poke-and-hope, fiddling their code more-or-less randomly, until mysterious errors stop appearing.

So if it's of real value to you (I don't know the motivating use case for the change) to pass stuff in the exception set, would it be good enough to do e = r + w instead of (in effect) e = map.keys() ? Then stuff that doesn't call itself readable or writable would again, as in 2.3.4, not get passed to select().

I don't understand the use case or the correct intended use of asyncore , but e = r + w looks appealing. It allows object to be in the socket map without requiring that they be ready to do some kind of I/O at any instant that select is called.

Jeremy



More information about the Python-Dev mailing list