Skip to main content

Context manager for background command-line programs

Project description

https://travis-ci.org/marc-lopez/process-wrapper.svg?branch=v.0.2.x https://coveralls.io/repos/marc-lopez/process-wrapper/badge.svg?branch=v.0.2.x

Process Wrapper is a simple module that executes a command-line style program via a context manager. This is useful if you want your script to do something that relies on a background process.

This module is conceived because of a need to automate the setup and teardown of the Django server when running Robotframework tests. Sample usage would look like this:

#!/usr/bin/env python

import robot
from process_wrapper import run_process

with run_process('python manage.py runserver'):
    robot.run('blackbox_test.robot')

Right now, the process being run is forcefully terminated with a SIGKILL or equivalent signal on context exit. Caution is advised.

To install

Run in command line:

pip install process-wrapper

Dependencies

psutil

Tested Capabilities

  • Kills parent and child processes on exit

  • Handles in-context exceptions: It still kills the called process and its children

  • Processes are properly cleaned up when in-context exceptions occur

  • Process wrapper will do nothing if it encounters a Process Not Found exception for the parent process and raise all others

  • Tested to work in win32 and linux2 platforms

Test Command

Command used to test the module. Includes line and branch coverage:

py.test processwrapper/tests --cov processwrapper --cov-report term-missing --pep8

Thanks to

jung rhew for providing the basis of process teardown code that I used

Project details


Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page