[Zope-dev] Possible Windows Service improvements.

Mark Hammond mhammond at skippinet.com.au
Tue Oct 12 02:39:48 EDT 2004


Ressurecting a bit of an old thread:

> From: Chris McDonough [mailto:chrism at plope.com]
> Sent: Wednesday, 4 August 2004 11:19 PM
> Subject: Re: [Zope-dev] Possible Windows Service improvements.
...

> I'm a Windows signal idiot.

I was too.  I think I understand them a little better now after having
played with both the signal module, and the win32 specific functions.

> Is there a way that we can make the Zope
> process capture Windows signals and when the Windows equivalent of
> SIGTERM is sent to the process to shut it down "cleanly"?  This is how
> it works on UNIX, but we circumvent trying to listen for signals on
> Windows entirely at startup.  There are all sorts of hooks for "clean"
> shutdown now that we can coopt if we can make the process capture a
> signal.

I've uploaded a patch to http://collector.zope.org/Zope/1527.  I'd
appreciate any comments - specifically about if I have hooked the
appropriate place.

My first reaction was that the correct hooks were in SignalHandler.py and
Signals.py - however, Windows signals really aren't suitable for hooking
there - only SIGINT is supported.  Trying to twist code into pretending
signals on Windows worked like Linux ended up with a bit of a mess.  Hacking
Lifetime.py was the cleanest solution.

> Note that the UNIX environment has a lot of additional niceties due to
> responses to signals (like logfile rotation) that Windows doesn't now,
> which tends to have the effect of relegating Windows to a second-class
> platform on which to run a production Zope instance.

I guess the correct way to do that gets back to the other issue this thread
raised - cross-platform startup/error reporting and command handling.  I
fear that will take a little longer to implement.  I hope to break this up
into 2 tasks:

* Give windows reliable shutdown behaviour now.
* Try and develop a basis for reliable cross-platform parent/child
notification and control.

I think the first would allow us to gracefully shutdown services - at the
moment the child process is immediately terminated!  The second would give
us better startup and error recovery, but that seems less important to me.
I hope to submit a patch for the service code shortly.

Mark



More information about the Zope-Dev mailing list