2011-06-29 12 views
12

特定の条件に達したときにねじれた反応器を停止する方法はありますか?たとえば、変数が特定の値に設定されている場合、リアクタは停止する必要がありますか?条件でねじれた反応器を停止する

答えて

18

理想的には、あなたがreactor.stop()を呼びたい、値に変数を設定し、原子炉を停止しないでしょう。時にはあなたはメインスレッドにいませんが、これは許可されていないので、reactor.callFromThreadに電話する必要があります。ここには3つの作業例があります:

# in the main thread: 
reactor.stop() 

# in a non-main thread: 
reactor.callFromThread(reactor.stop) 

# A looping call that will stop the reactor on a variable being set, 
# checking every 60 seconds. 
from twisted.internet import task 
def check_stop_flag(): 
    if some_flag: 
     reactor.stop() 
lc = task.LoopingCall(check_stop_flag) 
lc.start(60) 
+0

ルーピングコールの例は、私が探していたものです。それでも、some_flagが設定されているときにリアクターにイベントを追加することができれば、some_methodを呼び出してreactor.stopを呼び出すことは素晴らしいことです。 – gmemon

+0

お返事ありがとうございました – gmemon

+0

ありがとうございます。なぜreactor.stop()がメインスレッドからの呼び出しをデフォルトにしていないのか不思議です。それは不要な複雑さのようですが、根本的な理由があったと確信しています。 – wickedchicken

5

てください:

if a_variable == 0: 
    reactor.stop() 
関連する問題