Skip to content

Pure python utilities for systemd

License

Notifications You must be signed in to change notification settings

miccoli/trick17

Repository files navigation

trick17

Pre-Alpha warning

PyPI - Version PyPI - Python Version

trick17 is a pure python, lightweight package that interfaces with various systemd components.


Table of Contents

Installation

pip install trick17

Modules

trick17.daemon

  • daemon.booted() returns True if system was booted by systemd.
  • daemon.notify(state) sends a notification to systemd.
  • listen_fds() returns an list of (fd, name) tuples in case of socket activation, see systemd.socket

trick17.journal

The trick17.journal allows to use the systemd Native Journal Protocol via the Python Logging facility.

  • JournalHandler is a logging.Handler subclass that speaks the systemd Native Journal Protocol
  • Function stderr_is_journal() can be used to check if logging via sys.stderr should be upgraded to native logging, see Automatic Protocol Upgrading
import logging

from trick17 import journal

if journal.stderr_is_journal():
    handler = journal.JournalHandler()
else:
    handler = logging.StreamHandler()
root = logging.getLogger()
root.addHandler(handler)

logging.error('Something happened')

License

trick17 is distributed under the terms of the MIT license.

Motivation and alternatives

Many existing interfaces to systemd are python bindings to libsystemd, see e.g. python-systemd or cysystemd. Even if most systems running under systemd will have libsystemd already installed, a native python implementation has many advantages:

  • easy vendoring,
  • pypi availability of no-ABI, platform independent wheels, with no transitive dependencies.

This package is a partial implementation of the most used (at least by me) functions of libsystemd. Please feel free open a issue if this package is useful to you and misses a feature.

About

Pure python utilities for systemd

Resources

License

Stars

Watchers

Forks

Packages

No packages published