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. Callinglisten_servers_with_names
will throw aNotImplementedException
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for systemd_socketserver-1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 987a8bfbf28d959e7c2966c742ad7bad482f05e121077defcf95bb38267db9a8 |
|
MD5 | 904425e052f469408fb8d42195af988e |
|
BLAKE2b-256 | d84fb28b7f08880120a26669b080ca74487c8c67e8b54dcb0467a8f0c9f38ed6 |