On Tue, 17 Mar 2009 15:04:22 +0100, Laszlo Nagy <gand...@shopzeus.com> wrote:
This is a long running process, written in Python. Only standard lib is used. This process accepts connections on TCP sockets, read/write data.

After about one day, it starts throwing this when I try to connect:

[snip]
File "/usr/local/www/vhosts/shopzeus.com/fantasy/sorb/endpoint.py", line 344, in read_data
   ready = select.select([fd], [], [], 0.2)
ValueError: filedescriptor out of range in select()


For whatever reason, you're ending up with a lot of open files and/or sockets
(and/or any other resource based on file descriptors).  That results in new
file descriptors having large values (>=1024).

You cannot use select() with such file descriptors.  Try poll() instead,
or Twisted. ;)

However, the use of select() you demonstrated is an unusual one, and not
very good.  It looks like the only purpose is to work around a bug in
CPython on Windows where a process in a blocking read cannot be interrupted
by C-c in the console?  If that's the case, there may be other approaches
to solving the problem (like fixing the bug in CPython which causes this).

Jean-Paul
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to