use*_*039 3 python process twisted
我需要在它自己的端口上运行我的服务器应用程序的多个实例.如果我用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)
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来整齐地停止这样的过程.只是调用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
Run Code Online (Sandbox Code Playgroud)
迪米特里.
Tzu*_*hay 10
我不确定你得到了什么错误.以下是来自扭曲站点(已修改)的示例.正如您所看到的,它会侦听两个端口,并且可以侦听更多端口.
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
class QOTD(Protocol):
def connectionMade(self):
self.transport.write("An apple a day keeps the doctor away\r\n")
self.transport.loseConnection()
# Next lines are magic:
factory = Factory()
factory.protocol = QOTD
# 8007 is the port you want to run under. Choose something >1024
reactor.listenTCP(8007, factory)
reactor.listenTCP(8008, factory)
reactor.run()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6747 次 |
| 最近记录: |