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
File details
Details for the file systemd_service-1.8.tar.gz
.
File metadata
- Download URL: systemd_service-1.8.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
3c53a0180c7ebe6b62461c3218816d2d3f87050f058c0f3281006e7fac301e19
|
|
MD5 |
453cfb461fb06d9bdc8a488172152857
|
|
BLAKE2b-256 |
8ae92e1753130e184e38750cc6e4c3186f2c7421418e42c012ab25a61c14e704
|
File details
Details for the file systemd_service-1.8-py3-none-any.whl
.
File metadata
- Download URL: systemd_service-1.8-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c818669d3e28188ecbe1911c7651e710eaa2604497a0ba5d943ffe5aa242d9f7
|
|
MD5 |
2b789e30822d6f7503e07a65338619d7
|
|
BLAKE2b-256 |
e52fd8bae2205586aa298439f5a8991f7a245c9ffdd239d1dec20fa3d8c2dcf6
|