filedescriptor out of range in select()
Steve Holden
sholden at holdenweb.com
Fri Jun 27 10:45:50 EDT 2003
"Paolo Invernizzi" <paoloinvernizzi at dmsware.com> wrote in message
news:mailman.1056716925.10216.python-list at python.org...
> Fredrik Lundh wrote:
>
> > but I'm pretty sure asyncore supports the "poll" interface. try
changing
> > the asyncore.loop call in Dibbler.py to:
> >
> > asyncore.loop(map=context._map, use_poll=1)
> >
> > and see what happens.
>
> Here we are again....
> Too many open files... with poll too...
>
> ---
> Paolo
>
> SpamBayes POP3 Proxy Beta1, version 0.1 (May 2003),
> using SpamBayes POP3 Proxy Web Interface Alpha2, version 0.02
> and engine SpamBayes Beta1, version 0.1 (May 2003).
>
> Loading database... Done.
> SMTP Listener on port 2525 is proxying 127.0.0.1:25
> Listener on port 8110 is proxying kpnqwest.it:110
> User interface url is http://localhost:8880/
> error: uncaptured python exception, closing channel
> <__main__.BayesProxyListener listening :8110 at 0x83c9f6c>
> (socket.error:(24, 'Too many open files')
[...]
> Traceback (most recent call last):
> File "/usr/local/bin/pop3proxy.py", line 731, in ?
> run()
> File "/usr/local/bin/pop3proxy.py", line 725, in run
> main(state.servers, state.proxyPorts, state.uiPort, state.launchUI)
> File "/usr/local/bin/pop3proxy.py", line 664, in main
> Dibbler.run(launchBrowser=launchUI)
> File "/usr/local/lib/python2.2/site-packages/spambayes/Dibbler.py",
> line 528, in run
> asyncore.loop(map=context._map,use_poll=1)
> File "/usr/local/lib/python2.2/asyncore.py", line 206, in loop
> poll_fun (timeout, map)
> File "/usr/local/lib/python2.2/asyncore.py", line 190, in poll3
> obj.handle_error()
> File "/usr/local/lib/python2.2/site-packages/spambayes/Dibbler.py",
> line 205, in handle_error
> asynchat.async_chat.handle_error(self)
> File "/usr/local/lib/python2.2/asyncore.py", line 427, in handle_error
> self.close()
> File "/usr/local/bin/pop3proxy.py", line 368, in close
> if not self.isClosed:
> File "/usr/local/lib/python2.2/asyncore.py", line 372, in __getattr__
> return getattr (self.socket, attr)
> AttributeError: '_socket.socket' object has no attribute 'isClosed'
>
I suspect that the "too many open files" is simply a symptom of a deeper
problem, in that your sockets aren't being correctly closed due to a
programming error. The asyncore framework will happily continue to run even
if errors occur in the event-handling routines, cneatly demonstrating the
dangers of an unlimited "try:/except:".
There's a clear implication here that a BayesProxy instance isn't running
its __init__() method, because if it *were* running it the isClosed
attribute would be defined.
Are you perchance subclassing Bayesproxy and overriding its __init__()
rather than extending it? If so then try adding
BayesProxy.__init__(self, clientSocket, serverName, serverPort)
or equivalent to your subclass' __init__().
regards
--
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/pwp/
More information about the Python-list
mailing list