受信データをリッスンするねじれたリアクターがあります。結果を最初のリアクターに送信する特定の時間間隔で http 要求を実行する 2 番目のリアクターがあります。どちらも問題なく動作します。
今、私はそれをまとめて 1 つのリアクターで実行したいと考えていますが、これを達成する方法がわかりません。のようなもの - http リクエストを 60 秒ごとに実行します。最初のリスニング「メイン」リアクター内から非同期の方法で。
私が現時点で持っているものは次のとおりです。
# main reactor listening for incoming data forever
...
reactor.listenTCP(8123, TCPEventReceiverFactory())
http リアクターはtwisted.internet.defer.DeferredSemaphore()
、いくつかの http チェックを実行するために使用します。
# create semaphore to manage the deferreds
semaphore = twisted.internet.defer.DeferredSemaphore(2)
# create a list with all urls to check
dl = list()
# append deferreds to list
for url in self._urls:
# returns deferred
dl.append(semaphore.run(self._getPage, url))
# get a DefferedList
dl = twisted.internet.defer.DeferredList(dl)
# add some callbacks for error handling
dl.addCallbacks(lambda x: reactor.stop(), self._handleError)
# start the reactor
reactor.run()
時限 http チェックを「メイン」リアクターに追加して、非同期で実行するにはどうすればよいですか? DeferredSemaphore
正確にはどのように機能しますか?
誰でもこれで私を助けることができますか?
[これは、http チェック結果を処理する一種の軽量監視システムです。Twisted および非同期プログラミングは初めてです。私はPython 2.7を実行しているXubuntu 12.04を使用しています]