[Zope] Re: Zope 2.8.4 strange behavior
Florent Guillaume
fg at nuxeo.com
Tue Nov 29 19:51:40 EST 2005
Dieter Maurer wrote:
> Paul Winkler wrote at 2005-11-28 15:37 -0500:
>
>>...
>>
>>>We had to implement a keep alive mechanism to prevent our firewall
>>>from behaving in this nasty way.
>>
>>OK. Can you give a high-level summary of what you did? I thought of
>>using heartbeat to detect loss of connection, but I'm not sure what I
>>could do on failure short of restarting Zope.
>
>
> We knew that our firewall shuts down connections with a timeout
> of 30 min. Thus, we have send our ZEO a keep alive message
> every 20 min. The code roughly looks like this:
>
> KeepPeriod= int(environ.get('ZEO_KEEP_ALIVE')) * 60
>
> Storage = getConfiguration().dbtab.getDatabase('/')._storage
>
> def keepAlive():
> LOG("CustomZODB",INFO,"Keep alive thread started")
> while 1:
> sleep(KeepPeriod)
> if Storage._ready.isSet():
> LOG("CustomZODB",INFO,"Sending keep alive message")
> Storage._load_lock.acquire()
> try:
> try:
> Storage._server.get_info()
> LOG("CustomZODB",INFO,"Sent keep alive message")
> except:
> LOG("CustomZODB",ERROR,".... failed", error=exc_info())
> finally: Storage._load_lock.release()
> else:
> LOG("CustomZODB",PROBLEM,"Connection is down")
> start_new_thread(keepAlive,())
Why not use the max-disconnect-poll option of the zeoclient section in
zope.conf ?
Florent
--
Florent Guillaume, Nuxeo (Paris, France) Director of R&D
+33 1 40 33 71 59 http://nuxeo.com fg at nuxeo.com
More information about the Zope
mailing list