我想使用Twisted来重建现有应用程序的通信部分。这个应用程序确实从客户端向服务器发送数据,只是这样,服务器不发送任何内容。在
如何使用Twisted的事件驱动概念来实现这一点?我目前使用connectionMade
方法Protocol
,但我认为这不是正确的方法。在
class Send(Protocol):
def connectionMade(self):
while True:
data = queue.get()
self.transport.write(data + "\n")
self.transport.doWrite()
我很确定,这是一个很好的方法。;—)
添加:
我的问题是,我无法想象使用什么事件来处理这个问题。我认为connectionMade
事件不是正确的,但是在我的例子中,除了connectionLost
之外,我永远不会到达任何其他事件,因为服务器不会向客户端发送任何内容。我应该改变这种行为吗?在
不,那绝对不是正确的方法。永远不要打电话给
doWrite
。在这里的问题是,我打赌
queue.get()
只是阻塞,直到有了一些数据。如果可能,请使用非阻塞的消息传递方式,而不是线程。例如,让你的线程仅仅callFromThread
到你的Send
协议来做一些事情。在但是,假设有一个阻塞的“get”调用,类似这样的方法可能有效:
这是另一个使用UDP/Multicast在服务器和客户端之间进行通信的问题
我也建议一些额外的阅读和twisted文档的例子。在
相关问题 更多 >
编程相关推荐