Skip to main content

Runner Build Status codecov donate using paypal

Simple wrapper around subprocess.Popen.

Multiple commands can be configured to be executed. Each command can have some predetermined parameters and additional parameters or overrides can be passed when application is executed. Multiple instances of one application can be running using aliases.

To communicate to running processes Channel classes from yet-another-io-channels-library are used.

Examples:

Using STDIO.

runner = Runner()
runner.add("cat", "cat")
runner.start('cat')
channel = runner.get_channel('cat')
channel.write(b'hello, world')
# later
line = channel.read() # Will return b'hello, world'

Using UNIX socket.

runner = Runner()
self._runner.add("socat", "socat SYSTEM:cat UNIX-LISTEN:socket",
                 type="socket", socket="socket")
runner.start('socat')
channel = runner.get_channel('socat')
channel.write(b'hello, world')
# later
line = channel.read() # Will return b'hello, world'

Classes

Runner

Runner(*, extra_paths=None)

Create a new runner object.

  • extra_paths: List of paths which will be appended to PATH environment variable

add(self, name, command, **kwargs)

Add the application to the list of registered applications or update if already added.

  • name: application name
  • command: the command to be executed

**kwargs can include the following:

  • type: either stdio or socket. Default is stdio
  • cwd: working directory of the process
  • socket: if type is socket, this is the name of the UNIX socket file to connect to
  • setpgrp: if True the process is moved to a separate process group and will not receive signals sent to main process. Default is False
  • buffering: if set to "line" the channel is line-buffered for reading

update_config(self, config)

Config must be a dictionary where each key is an alias of an application and value is a dictionary of that application's configuration. runner.add("app", "command", **kwargs) is equivalent to runner.update_config({"app": {"command": "command", **kwargs}}). Useful for adding multiple applications at once.

ensure_running(self, app_name, alias=None, with_args=None, **kwargs)

start(self, app_name, alias=None, with_args=None, **kwargs)

Start the process. If the process with the same alias is already running, start will raise ProcessExistsException, while ensure_running will silently do nothing.

  • app_name: application alias, given in the configuration
  • alias: alias that will be given to actual started process. If None, application alias will be used
  • with_args: list of additional arguments that will be added to the command
  • kwargs: extend or override parameters in application config

get_channel(self, alias)

Returns the Channel object to communicate to the running process.

terminate(self, alias)

Terminates the process.

Release files for yet-another-runner 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yet-another-runner 0.6.0
File Size Uploaded
yet-another-runner-0.6.0.tar.gz 8.0 kB Details

Release files / yet-another-runner-0.6.0.tar.gz

Download URL yet-another-runner-0.6.0.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0b3477b47525a8c8dd37d4e1e1199df464c3c875958094c80f009b0e6dcbc87f
BLAKE2b-256 checksum
How to use checksums
b59617597c793587b337bb86b1a6c4eb7a2cbca3c4d7a2d7f5c238ae2d064359
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

0.6.0 This release

1 release file

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page