首页 > 解决方案 > Twisted reactor.listenUNIX 更新到 python 3.8 后出错

问题描述

我已经将 twisted 从 13.0.0 更新到 20.3.0,将 python 从 2.7 更新到 3.8,现在 twisted 抛出这个无用的错误。(Ubuntu 16.04.6 LTS)

我验证了 .sock 文件和目录的权限,确保在reactor.listenUNIX调用之前删除了套接字文件。

这可能是什么原因造成的,我该如何解决这个问题?

class UserServer(Plugin):
    def setup(self):
        socket = self.parent.socket
        if os.path.exists(socket):
            os.remove(socket)
        self.console(socket)
        self.console(self.parent.config.get_umask('sock'))
        self.factory = UserServerFactory(self.parent)
        reactor.listenUNIX(socket, self.factory, mode=self.parent.config.get_umask('sock'))
service: 'user_server' failed to initialize
Traceback (most recent call last):
  File "/home/mcgen/tools/mark2/mk2/plugins/__init__.py", line 335, in load
    plugin = cls(self.parent, name, **kwargs)
  File "/home/mcgen/tools/mark2/mk2/plugins/__init__.py", line 165, in __init__
    self.setup()
  File "/home/mcgen/tools/mark2/mk2/services/user_server.py", line 148, in setup
    reactor.listenUNIX(socket, self.factory, mode=self.parent.config.get_umask('sock'))
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/posixbase.py", line 397, in listenUNIX
    p.startListening()
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/unix.py", line 408, in startListening
    self.startReading()
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/abstract.py", line 435, in startReading
    self.reactor.addReader(self)
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/epollreactor.py", line 109, in addReader
    self._add(reader, self._reads, self._writes, self._selectables,
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/epollreactor.py", line 96, in _add
    self._poller.register(fd, flags)
OSError: [Errno 22] Invalid argument

标签: pythontwistedtwisted.internet

解决方案


推荐阅读