Simple API to automate the creation of custom daemons for GNU/Linux.
Project description
Systemd-Service
Simple API to automate the creation of custom daemons for GNU/Linux.
A daemon is a service process that runs in the background and supervises the system or provides functionality to other processes. Traditionally, daemons are implemented following a scheme originating in SysV Unix. Modern daemons should follow a simpler yet more powerful scheme, as implemented by systemd.
Systemd-Service is a Python module to automate the creation of daemons under GNU/Linux environments.
Install
pip install -U systemd-service
Handle daemons
from systemd_service import Service
daemon = Service("stream_rpyc")
daemon.stop() # Start (activate) the unit.
daemon.start() # Stop (deactivate) the unit.
daemon.reload() # Reload the unit.
daemon.restart() # Start or restart the unit.
daemon.enable() # Enable the unit.
daemon.disable() # Disable the unit.
daemon.remove() # Remove the file unit.
This commands are uquivalent to the systemctl
calls, for example run in terminal the folowing command:
$ systemctl enable stream_rpyc
Can be running inside a Python environment with using systemd_service
from systemd_service import Service
daemon = Service("stream_rpyc")
daemon.enable()
Creating services
Similar to the previous scripts, the services can be created using systemd_service
:
daemon = Service("stream_rpyc")
daemon.create_service()
If the service must be initialized after other service
daemon = Service("stream_rpyc")
daemon.create_service(after='ntpd')
Creating timers
Defines a timer relative to when the machine was booted up:
daemon = Service("stream_rpyc")
daemon.create_timer(on_boot_sec=15)
Example
This module is useful when is combined with package scripts declaration in setup.py
file:
# setup.py
scripts=[
"cmd/stream_rpyc",
]
The script could looks like:
#!/usr/bin/env python
import sys
if sys.argv[-1] == "systemd":
from systemd_service import Service
daemon = Service("stream_rpyc")
daemon.create_timer(on_boot_sec=10, after='network.target kafka.service')
else:
from my_module.submodule import my_service
print("Run 'stream_rpyc systemd' as superuser to create the daemon.")
my_service()
Then the command can be called as a simple script but with the systemd
argument the command will turn into a service.
$ stream_rpyc
# Command executed normally
$ stream_rpyc systemd
# Service created
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for systemd_service-1.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c818669d3e28188ecbe1911c7651e710eaa2604497a0ba5d943ffe5aa242d9f7 |
|
MD5 | 2b789e30822d6f7503e07a65338619d7 |
|
BLAKE2b-256 | e52fd8bae2205586aa298439f5a8991f7a245c9ffdd239d1dec20fa3d8c2dcf6 |