2014-05-15 77 views
1

我使用AnyEvent::Twitter::Stream來編寫Twitter bot。我是基於事件編程的新手,所以我非常依賴文檔。使用AnyEvent保持流式:: Twitter :: Stream

由於這是一個機器人,我想讓這個數據流繼續前進,不受監督,當出現錯誤時(例如管道損壞或超時錯誤)。

如果我根本不包含錯誤處理程序,則整個程序將因錯誤而死亡。同樣,如果我使用類似示例文檔中的錯誤處理程序:

on_error => sub { 
    my $error = shift; 
    warn "Error: $error"; 
    $done->send; 
}, 

該程序死亡。如果我刪除「$ done-> send」;行,流被中斷,程序掛起。

我已經看過AE :: T :: S和AnyEvent的(稀疏)文檔,但我不確定我需要做些什麼來保持事情的進行。流可以給我一分鐘5,000個事件,我不能失去這個隨機網絡打嗝。

謝謝。

回答

0

爲別人解決方案使用此:

我說話的人更瞭解基於事件的東西。基本上,每個:: Stream對象代表一個到Twitter的HTTP請求;當該請求消失時,這是流的結束。 on_error方法在這一點上被調用,所以它只是給你一個地方說流的結束,爲了日誌的目的或其他。此方法不允許您重新啓動流。

如果你想機器人繼續玩下去,你有,無論是由具有OS重新啓動程序,或者只是包裝程序的整體在一段時間(1){}循環來創建一個新的流。

希望這可以幫助別人!

相關問題