atexit handlers - getting the return code
Robert Kern
robert.kern at gmail.com
Tue Sep 27 11:59:09 EDT 2011
On 9/27/11 9:37 AM, Mike Hull wrote:
> Hi Giampaolo,
> Sorry, I didn't explain very clearly.
> I have a python file, 'simulation_logger.py', (given below).
> Then, in my scripts, I add the following lines to the top,
>
>
>
> #simulation1.py:
> ###################
> from simulation_logger import SimulationDecorator
> SimulationDecorator.Init()
>
> # Rest of the simulation script....
>
> #####################
>
> and at the end of the simulation, it should write the stdout/stderr,
> the return code and any top level exception details into a database.
> This is working except I can't work out how to get the return code
> the script is going to return.
I don't think that's available inside the process. You may want to use a
"runner" script that records this information. Additionally, the runner script
could record the stdout/stderr information more cleanly than stubbing out
sys.stdout/sys.stderr. For example, if you have C or Fortran modules that use
their own mechanisms to print things directly to the STDOUT/STDERR file
descriptors, your sys.stdout/sys.stderr stubs will never be informed about it.
However, if the runner script directs stdout/stderr to a pipe, it can read every
bit of text that gets printed. Timing is probably also best recorded by the
runner script to record the startup overhead of the Python interpreter. Continue
to use the SimulationDecorator to record the traceback information, though.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list