在Twisted中访问从ClientFactory创建的所有对象?

时间:2010-11-08 03:21:11

标签: python events twisted reactor

我正在研究一个基本的Twisted应用程序,以帮助我了解反应堆如何与多种服务配合使用。我希望我的脚本要做的基本概要如下:

  

我的脚本将是Web服务器和IRC客户端。每次向Web服务器发出请求时,脚本都应在IRC上说出一条消息。

我有一个IRC客户端工作,一个twisted.web服务器工作,并且可以让它们在一个脚本中同时运行。当我尝试让它们彼此交互时会出现问题。以下是我启动服务器/客户端的方式:

import sys
from twisted.words.protocols import irc
from twisted.web import server, resource
from twisted.internet import protocol, reactor

# Define my custom IRC Client, ClientFactory, and Web Application

chan = sys.argv[1]
site = server.Site(Home())
reactor.listenTCP(8080, site)
reactor.connectTCP('irc.freenote.net', 6667, IRCBotFactory(chan))
reactor.run()

使用上面的代码,我的客户端的两个部分同时运行而没有问题。当尝试使IRC客户端在HTTP请求时向服务器发送消息时,我意识到我实际上并没有引用IRCBot intance,因为我使用IRCBotFactory启动了反应器并让Twisted处理实际bot的初始化对象

有没有办法在Twisted中获取工厂的所有子实例,或者是否有另一种方式让我启动IRC客户端(可能绕过工厂并简单地使用IRCBot实例)?

1 个答案:

答案 0 :(得分:1)

其中一个Twisted FAQ entries条目讨论了像这样的问题。请记住,网站是一个工厂,应该很容易为您的案例应用类似的解决方案。