我需要在自己的端口上运行我的服务器应用程序的多个实例。如果我用 os.system 或 subprocess.Popen 启动这些不是问题,但我想与多处理进行一些进程通信。
我想以某种方式动态设置监听来自不同进程的不同端口。只是调用 reactor.listenTCP 是不行的,因为我在停止反应堆时得到了奇怪的 Errno 22。我也很确定这不是正确的方法。我寻找示例,但找不到任何东西。任何帮助表示赞赏。
编辑:谢谢 Tzury,这有点像我想要的。但我必须动态添加端口来监听。例如
from twisted.internet import reactor
from multiprocessing import Process
def addListener(self, port, site):
''' Called when I have to add new port to listen to.
site - factory handling input, NevowSite in my case'''
p = Process(target=f, args=(port, func))
p.start()
def f(self, port, func):
''' Runs as a new process'''
reactor.listenTCP(port, func)
我需要一种巧妙地停止此类过程的方法。只是调用 reactor.stop() 停止子进程不会这样做。
这是我尝试停止进程时遇到的错误
--- <exception caught here> ---
File "/usr/share/exe/twisted/internet/tcp.py", line 755, in doRead
skt, addr = self.socket.accept()
File "/usr/lib/python2.6/socket.py", line 195, in accept
sock, addr = self._sock.accept()
<class 'socket.error'>: [Errno 22] Invalid argument
迪米特里。