[Zope-dev] Handling of ECONNRESET socket error in asyncore.py

Chris McDonough chrism@zope.com
24 Aug 2002 15:12:09 -0400


On Sat, 2002-08-24 at 14:00, Oliver Bleutgen wrote:
> isClientConnected might be a good idea the same way that the abort() and 
> other methods are a good idea in mod_perl.
> That is, give the developer a possibility to check if the client is 
> still able to read, i.e. still "there".
> But that can't reduce the responsibility of zope in such cases IMO.

It's certainly not an easy problem to solve.  Maybe someone on the list
has suggestions.  Switching to a multiprocess model might help, but
that's a pretty big undertaking.  I don't think its as big of a problem
as you seem to believe, but then again, I'm used to it and maybe I'm
inadvertently downplaying its performance impact.

> How exactly would you use isClientConnected with a "results" DTML-method 
> calling a a ZSQL-method which hangs? ;-)

There's really nothing that Zope or the programmer can do for you if a
call to fetch a row from your database hangs, as it's possible (even
likely) that no Python code would be executing during the time of the
hang (coupled with the fact that you can't sanely kill a Python thread
from outside)... I'd consider it a clue that you need to upgrade or fix
your database server or at least change its configuration.

- C