A remote process launcher.


Keywords
process, launcher
License
BSD-3-Clause
Install
pip install yassh==2.0.3

Documentation

Build Status Coverage Status Code Climate Issue Count Documentation Status

yassh

Yassh is a python library used to run asynchronous, dependent remote and local tasks.

Usage

import logging
from yassh import Reactor, RemoteRun, RemoteConfiguration, LocalRun

logging.basicConfig(level=logging.DEBUG)

# Create a remote ; only host parameter is mandatory
remote = RemoteConfiguration(host='localhost', username='user')

# ssh_config(5) options can be set in RemoteConfiguration object
remote.set('Compression', 'yes')
remote.set('CompressionLevel', '9')

r = Reactor()
c1 = RemoteRun(r, remote, 'sleep 5')
c2 = LocalRun(r, 'echo ok')
c3 = RemoteRun(r, remote, 'echo "finished" && sleep 1')


def start_c2(run):
    # Start cmd2 when cmd1 complete successfully
    if run.result == 0:
        c2.start()
c1.register_exit_monitor(start_c2)


def start_c3(run):
    # Start cmd3 when cmd2 complete
    c3.start()
c2.register_monitor(u'ok', start_c3)


def on_c3_finished(run):
    # Print dummy message when c3 is near terminaison
    print('c3 almost finished')
c3.register_monitor(u'finished', on_c3_finished)


# Start first task
c1.start()


# Infinite
timeout = -1
while r.run(timeout) > 0:
        pass

Installation

To install latest release:

pip install yassh

To install latest code:

pip install git+https://github.com/enyx-opensource/yassh.git

Testing

Run from project root:

behave

License

MIT License (see LICENSE)