我正在研究一个基本的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实例)?