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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 987a8bfbf28d959e7c2966c742ad7bad482f05e121077defcf95bb38267db9a8 |
|
MD5 | 904425e052f469408fb8d42195af988e |
|
BLAKE2b-256 | d84fb28b7f08880120a26669b080ca74487c8c67e8b54dcb0467a8f0c9f38ed6 |