Skip to main content

Socket server implementation that works with systemd socket activation

Project description

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.

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

systemd_socketserver-1.0-py3-none-any.whl (3.2 kB view details)

Uploaded Python 3

File details

Details for the file systemd_socketserver-1.0-py3-none-any.whl.

File metadata

  • Download URL: systemd_socketserver-1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.2 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for systemd_socketserver-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 987a8bfbf28d959e7c2966c742ad7bad482f05e121077defcf95bb38267db9a8
MD5 904425e052f469408fb8d42195af988e
BLAKE2b-256 d84fb28b7f08880120a26669b080ca74487c8c67e8b54dcb0467a8f0c9f38ed6

See more details on using hashes here.

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