使用systemd套接字激活的套接字服务器实现

systemd-socketserver的Python项目详细描述


系统套接字服务器

systemd socketserver是一个简单的python3包,它提供了SystemdSocketServer类, 与systemd的socket激活功能协同工作的socket服务器实现。在

对于编写基本的套接字激活守护程序非常有用。在

安装

从PyPi安装:

pip install systemd-socketserver

或从Git克隆并从源安装:

^{pr2}$

基本用法

有关完整示例,请参见example目录。在

下面的Python模块在通过.socket单元激活时,将把第一个发送行回送到套接字 然后断开。在

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()

特点:

  • 支持并自动检测侦听和接受套接字(.socket单元中的Accept=true|false

  • 支持命名文件描述符,使不同的处理程序很容易绑定到不同的套接字。在

    此功能依赖于的最新软件包版本中当前不存在的功能 python-systemd,即listen_fds_with_names函数。 在本例中,调用listen_servers_with_names将抛出一个NotImplementedException。在

    从源代码构建pythonsystemd将包括对listen_fds_with_names的支持,因此这一特性 会有用的。在

    有关此功能的示例,请参阅example目录中的代码。在

已知限制

  • 此模块仅使用INET套接字进行了测试。在
  • 更好的文档。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra docker无法通过JMX连接   java以编程方式在图片模式下启用图片   java访问json数组中的json数组   swing Java 2D API:空指针异常   java Storm 2.0.0内存不足   java为什么Splitter在Spring Integration中处理集合项时直接返回集合?   java Spring启动到Postgres数据库驱动程序问题   java如何将对象围绕其中心旋转90度?   无法返回变量。“java:找不到变量”   通过BigInteger进行Java基转换   在Java中获取日期格式   java构建具有依赖关系的jar并将其绑定到tar中。gz使用maven组装   java为什么Guice在main中从UncaughtExceptionHandler抛出$ComputeException?   spring升级到Java7时有哪些陷阱   java从JTable向数组获取值   java Android在启动新活动时会杀死多个以前的活动   postgresql是否可以在批处理过程中运行java命令?   安卓使用Java代码创建文件上传请求   java一些元素神奇地没有从ArrayList中删除