2011-06-29 16 views

Trả lời

18

Tốt nhất, bạn sẽ không đặt biến đến một giá trị và ngăn chặn các lò phản ứng, bạn muốn gọi reactor.stop(). Đôi khi bạn không ở trong chuỗi chính và điều này không được phép, vì vậy bạn có thể cần phải gọi reactor.callFromThread. Dưới đây là ba ví dụ làm việc:

# 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

Ví dụ cuộc gọi lặp là những gì tôi đang tìm kiếm. Tuy nhiên, nó sẽ là tuyệt vời nếu một sự kiện có thể được thêm vào lò phản ứng mà nói khi some_flag được thiết lập, gọi some_method, mà sẽ gọi reactor.stop. – gmemon

+0

Cảm ơn bạn đã trả lời chi tiết – gmemon

+0

Cảm ơn bạn đã đăng bài này. Một trong những thắc mắc tại sao reactor.stop() không mặc định để gọi từ chủ đề chính ... nó có vẻ như biến chứng không cần thiết nhưng tôi chắc chắn có một lý do cơ bản cho nó. – wickedchicken

5

chắc chắn:

if a_variable == 0: 
    reactor.stop() 
Các vấn đề liên quan