Доступ ко всем объектам, созданным из ClientFactory в Twisted? - PullRequest
2 голосов
/ 08 ноября 2010

Я работаю над базовым приложением Twisted, чтобы помочь мне узнать, как реакторы работают с несколькими службами. Основная схема того, что я хотел бы сделать, чтобы мой сценарий был следующим:

Мой скрипт будет одновременно и веб-сервером, и IRC-клиентом. Каждый раз, когда к веб-серверу поступает запрос, скрипт должен сообщить об этом в 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)?

...