Design notes

Pipettor now builds on top of subprocess. However, it uses the soon to be depreciated preexec_fn to set the process group id. A request has been add a function to set pgid has been added to the depreciation ticket.

Design issues

  • issues with signals and process groups - creating a process group for the pipeline allows waiting on any process to complete, so polling isn’t necessary - however, this prevents signals from being directly propagated - don’t use process groups
  • python’s handling of SIGINT is especially problematic, as it delays signal delivery. Switch to using subprocess should improve the behavior.