我正在开发一个基本的 Twisted 应用程序,以帮助我了解 react 器如何与多个服务一起工作。我希望我的脚本执行的操作的基本概要如下:
My script will be both a Web Server and an IRC Client. Every time a request is made to the web server, the script should say a message on 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 实例,因为我使用 IRCBotFactory 启动了 react 器并让 Twisted 处理实际机器人的初始化对象。
有没有办法在 Twisted 中获取工厂的所有子实例,或者有没有其他方法可以让我启动 IRC 客户端(可能绕过工厂并简单地使用 IRCBot 实例)?
请您参考如下方法:
扭曲者之一 FAQ entries条目讨论了这样一个问题。请记住,一个站点就是一个工厂,将类似的解决方案应用到您的案例中应该很容易。
