2016-04-22 69 views
0

我正在使用Celluloid-zmq,並且我正在連接到應用程序中的多個套接字。應用程序保持在後臺環路聽,但是當我關閉特定的套接字它給了我這個錯誤「賽璐珞:: TaskTerminated:任務被終止」賽璐珞::任務終止:任務已終止

我結束對異常循環,

def puller_loop 
    logger.info "polling PULL socket" 
    loop { 
      begin 
       async.evaluate_response(pullsock.read_multipart,'PULL') 
      rescue Exception => e 
       break 
      end 
    } 
end 
+0

你有代碼嗎?斷開連接時出現此錯誤是正常的,但您通常期望它。你如何關閉套接字? – digitalextremist

+0

我使用close方法關閉套接字。關閉拉套接字後,我希望應用程序繼續監聽其他套接字(在這種情況下爲DEALER)。 –

+0

因爲'異步' – digitalextremist

回答

1

偵聽器方法在關閉套接字時崩潰。您必須優美地結束&結束處理程序循環。

務必附上插座readwrite操作中rescue塊,並在異常然後breakloop的,比如你提到的,或者其他套接字錯誤。


而且,由於你的loop觸發對到達的數據的async調用,rescue,必須由async調用的方法...在loop本身。確保不是儘可能趕上Exception。我隱約地確定你的錯誤不是Exception

+0

更新的問題與代碼。 –

+0

我沒有例外嘗試(救援=> e)。它給出同樣的錯誤。 –

+0

你可以發佈回溯嗎? – digitalextremist