Skip to main content

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.

GitHub top language PyPI - License PyPI PyPI - Status PyPI - Python Version GitHub last commit CodeFactor Grade Documentation Status

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

systemd_service-1.8.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

systemd_service-1.8-py3-none-any.whl (4.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page