<br><br><div class="gmail_quote">On Tue, Feb 21, 2012 at 10:24 AM, Graham Dumpleton <span dir="ltr">&lt;<a href="mailto:graham.dumpleton@gmail.com">graham.dumpleton@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">...<br>
&gt; But I don&#39;t think you can guarantee that everything is still up in memory by<br>
&gt; the time atexit gets called,<br>
&gt; so you can&#39;t really call cleanup code there.<br>
<br>
</div>The only thing which is done prior to atexit callbacks being called is<br>
waiting on threads which weren&#39;t marked as daemonised.<br>
<br></blockquote><div><br>which can lead to completely lock the shutdown if a lib or the program has a thread with a loop that waits for a condition.<br><br>which it is not the case with signals, since you get a chance to properly stop everything beforehand.<br>
<br><div class="im"><br>
&gt;<br>
&gt; what do you mean by bypassing its destruction ?<br>
<br>
</div>&gt; Non catchable signal from within process or from a distinct monitoring process.<br>
&gt; One of this things I pointed out is being missed.<br>
&gt; That is, a WSGI adapter may be running on top of another layer of<br>
&gt; abstraction, such as FASTCGI for example, where the lower layer isn&#39;t<br>
&gt; going to have any callback mechanism of its own to even notify the<br>
&gt; WSGI layer to trigger registered cleanup callbacks.<br>
&gt; This is why the only mechanism one can universally rely on is the<br>&gt; Python interpreters own atexit mechanism.<br><br>I see.. but what I don&#39;t understand is the following: when the whole stack is shut down, the python process is being killed by *someone*.<br>
<br>And that someone, as far as I understand, is also able to send requests to the WSGI application.<br><br>So what makes it impossible to send a shutdown signal prior to killing the process ?<span class="HOEnZb"><font color="#888888"><br>
</font></span></div></div><br>Sorry if I miss the obvious, I am probably over-simplifying things here :d<br><br>Cheers<br clear="all">Tarek<br>-- <br>Tarek Ziadé | <a href="http://ziade.org">http://ziade.org</a><br>