代码之家  ›  专栏  ›  技术社区  ›  Mike Trpcic

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

  •  2
  • Mike Trpcic  · 技术社区  · 14 年前

    我正在研究一个基本的扭曲应用程序,以帮助我了解反应堆如何与多个服务一起工作。我想让我的脚本做的基本概述如下:

    我的脚本将同时是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启动了reactor,并让twisted处理实际bot对象的初始化。

    有没有一种方法可以让工厂的所有子实例都处于扭曲状态,或者有没有其他方法可以让我启动IRC客户机(可能绕过工厂,只使用一个IRCBot实例)?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jean-Paul Calderone    14 年前

    一个扭曲的 FAQ entries 条目讨论了这样一个问题。只要记住一个网站是一个工厂,它应该很容易应用到您的案件类似的解决方案。