djblets.util.contextmanagers¶
Miscellaneous utilities.
- controlled_subprocess(process_name, process)[source]¶
- A context manager for a subprocess that guarantees that a process is terminated, even if exceptions are thrown while using it. - The process_name argument is used for logging when the process goes down fighting. The process argument is a process returned by subprocess.Popen. - Example usage: - process = subprocess.Popen([‘patch’, ‘-o’, newfile, oldfile]) - with controlled_subprocess(“patch”, process) as p:
- # … do things with the process p 
 - Once outside the with block, you can rest assured that the subprocess is no longer running. 
