> On 14 January 2013 17:18, Roberto De Ioris <[email protected]> wrote: >> >>> Hi, >>> >>> We at $work are using uWSGI with Perl. We would like to trigger >>> certain cleanup actions when a worker is terminated. >>> >>> My first thought was to intercept $SIG{TERM}/$SIG{INT}/$SIG{QUIT} as >>> necessary, however experiments to make this work suggest that uWSGI >>> intercepts these signals, and does not allow the worker process to >>> handle them itself. >>> >>> How can we ensure that cleanup processes are correctly run at >>> termination? >>> >>> Is it possible to register a pre-teardown handler somehow? >>> >>> I have experience hacking perl internals, I would be open to >>> investigating improvements in this area given some guidance. >>> >>> Yves >>> ps: Please forgive any lack of RTFM, I am new to uWSGI and still >>> getting up to speed. >>> >>> -- >>> perl -Mre=debug -e "/just|another|perl|hacker/" >>> _______________________________________________ >>> uWSGI mailing list >>> [email protected] >>> http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi >>> >> >> You can try with the AtExit module >> >> http://search.cpan.org/~bradapp/AtExit-2.01/AtExit.pm >> >> now i am not able to test it, but eventually fixing the psgi plugin for >> it >> should be pretty easy. > > As far as I can tell this solution will have the same problem. END{} > blocks are not executed due to a termination triggered by a signal. > > <quote> > It is important to note that END{} blocks and object destruction only > get called on normal termination (which includes calls to die or > Carp::croak). They do not get called when the program terminates > abnormally (due to a signal for example) unless special arrangements > have been made by the programmer (e.g. using a signal handler -- see > "%SIG{expr}" in perlvar). > </quote> > > Since uWSGI seems to not support passing such signals to the worker > process it seems to me that we are back to the same problem. > > Yves > >
I was sure AtExit would make use of the C atexit() function. By the way this is not a big problem, the plugin api already has the ability to run hooks on shutdown/reload, it is a matter of 4-5 lines of C. I think i will be able to release a patch tomorrow. -- Roberto De Ioris http://unbit.it _______________________________________________ uWSGI mailing list [email protected] http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
