2

我正在开发一个基本的 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 实例,因为我使用 IRCBotFactory 启动反应器并让 Twisted 处理实际机器人的初始化目的。

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

4

1 回答 1

1

Twisted FAQ 条目之一讨论了这样一个问题。请记住,站点是工厂,应该很容易将类似的解决方案应用于您的案例。

于 2010-11-08T05:41:28.897 回答