Skip to main content

systemd-socketserver

systemd-socketserver is a simple Python 3 package that provides the SystemdSocketServer class, a socket server implementation that works in tandem with systemd's socket activation feature.

Very useful for writing basic socket activated daemons.

Installation

Install from PyPi:

pip install systemd-socketserver

Or clone from Git and install from source:

setup.py install

Basic Usage

For a full example see the example directory.

The following Python module, when activated via .socket unit, will echo the first sent line to the socket then disconnect.

class EchoHandler(socketserver.StreamRequestHandler):
    def handle(self):
        self.data = self.rfile.readline()
        self.wfile.write(self.data.upper())

server = systemd_socketserver.listen_server(EchoHandler)

if server is None:
    print('this example only supports socket activation', file=sys.stderr)
    return

server.listen_forever()

Features:

  • Supports and auto detects both listen and accept sockets (Accept=true|false in the .socket unit)

  • Supports named file descriptors, making it easy to bind different handlers to different sockets.

    This feature relies on functionality currently not present in the most recent package release of python-systemd, namely the listen_fds_with_names function. Calling listen_servers_with_names will throw a NotImplementedException in this case.

    Building python-systemd from source will include support for listen_fds_with_names and hence this feature will work.

    For an example of this functionality see the code in the example directory.

Known Limitations

  • This module has only been tested with INET sockets.
  • Better documentation TODO.

Release files for systemd-socketserver 1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for systemd-socketserver 1.0
File Interpreter ABI Platform
systemd_socketserver-1.0-py3-none-any.whl Python 3 none any Details

Release files / systemd_socketserver-1.0-py3-none-any.whl

Download URL systemd_socketserver-1.0-py3-none-any.whl
Size 3.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
987a8bfbf28d959e7c2966c742ad7bad482f05e121077defcf95bb38267db9a8
BLAKE2b-256 checksum
How to use checksums
d84fb28b7f08880120a26669b080ca74487c8c67e8b54dcb0467a8f0c9f38ed6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.0

Release history Release notifications | RSS feed

This release

1.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page