trick17
is a pure python, lightweight package that interfaces with various systemd components.
Table of Contents
pip install trick17
daemon.booted()
returnsTrue
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
The trick17.journal
allows to use the systemd Native Journal Protocol via the Python Logging facility.
JournalHandler
is alogging.Handler
subclass that speaks the systemd Native Journal Protocol- Function
stderr_is_journal()
can be used to check if logging viasys.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')
trick17
is distributed under the terms of the MIT license.
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.