Runners
Runners
Runners now for PyPPL are also implemented as plugins.
Same as plugins, if runners are written as modules, they are enabled once they are installed.
Runners should be named as pyppl-runner-xxx or pyppl_runner_xxx and be used while pXXX.runner = "xxx".
If a runner needs configurations, then the runner should be specified as pXXX.runner = dict(runner="xxx", ...<other configurations>)
Runners can be specified using configuration profile. For example:
# pyppl.toml
[default.runner]
runner = "local"
ssh_servers = ["server1", "server2"]
sge_q = "1-day"
[longerq]
forks = 32
runner = "sge"
sge_q = "4-days"
PyPPL(config_files = 'pyppl.toml').start(pXXX).run('longerq')
pXXX.forks == 32
pXXX.runner == dict(runner = "sge", sge_q = "4-days", ssh_servers = ["server1", "server2"])
If a profile does not exist, it will be fallen back to a real runner name. For example:
PyPPL().start(pXXX).run('ssh')
pXXX.runner == dict(runner = "ssh")
Runner APIs
See here for all available APIs for runners
Entry point
You can register plugins by yourself using pyppl.register_runner. However, if you want to expose your runner to PyPPL by adding entrypoint to your setup.py, pyproject.toml or other equivalent packaging setting files:
For setup.py, you will need:
setup(
# ...
entry_points={"pyppl_runner": [
"pyppl_runner_dry = pyppl_runners:dry",
"pyppl_runner_ssh = pyppl_runners:ssh",
"pyppl_runner_sge = pyppl_runners:sge",
"pyppl_runner_slurm = pyppl_runners:slurm",
]},
# ...
)
For pyproject.toml:
[tool.poetry.plugins.pyppl_runner]
pyppl_runner_dry = "pyppl_runners:dry"
pyppl_runner_ssh = "pyppl_runners:ssh"
pyppl_runner_sge = "pyppl_runners:sge"
pyppl_runner_slurm = "pyppl_runners:slurm"
Runner gallery
- pyppl_runners: Common runners for PyPPL