Skip to main content
 首页 » 编程设计

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

2025年05月04日14kuangbin

我正在开发一个基本的 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条目讨论了这样一个问题。请记住,一个站点就是一个工厂,将类似的解决方案应用到您的案例中应该很容易。