私は、リアクターが複数のサービスでどのように機能するかを学ぶのに役立つ、基本的なツイストアプリケーションに取り組んでいます。スクリプトに実行させたい基本的な概要は次のとおりです。
私のスクリプトは、WebサーバーとIRCクライアントの両方になります。Webサーバーにリクエストが送信されるたびに、スクリプトはIRCにメッセージを送信する必要があります。
IRCクライアントが機能し、twisted.webサーバーが機能しており、1つのスクリプトで同時に実行できます。これらを相互に作用させようとすると、問題が発生します。サーバー/クライアントを開始する方法は次のとおりです。
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()
上記のコードを使用すると、クライアントの2つの部分が問題なく同時に実行されます。しかし、HTTPリクエストに応じてIRCクライアントにサーバーにメッセージを送信させようとすると、IRCBotFactoryでリアクターを開始し、Twistedに実際のボットの初期化を処理させたため、実際にはIRCBotインスタンスを参照していないことに気付きました。物体。
Twistedでファクトリのすべての子インスタンスを取得する方法はありますか、またはIRCクライアントを開始する別の方法がありますか(おそらくファクトリをバイパスしてIRCBotインスタンスを使用するだけです)?