使用AnyEvent :: Twitter :: Stream保持流畅通

时间:2014-05-15 19:13:37

标签: perl twitter

我正在使用AnyEvent::Twitter::Stream来编写Twitter机器人。我是基于事件的编程的新手,所以我非常依赖于文档。

由于这是一个僵尸程序,我希望当出现错误(例如管道损坏或超时错误)时,流将继续运行,无人监督。

如果我根本不包含错误处理程序,则整个程序会因错误而死亡。同样,如果我使用错误处理程序,例如示例文档中的内容:

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

程序死了。如果我删除" $ done-> send;"行,流被中断,程序挂起。

我已经查看了AE :: T :: S和AnyEvent的(稀疏)文档,但是我不知道我需要做些什么才能让事情继续下去。该流可以每分钟给我5,000个事件,我无法通过随机网络打嗝丢失这个事件。

感谢。

1 个答案:

答案 0 :(得分:0)

使用此功能的其他人的解决方案:

我和一些对基于事件的东西更了解的人交谈过。基本上,每个:: Stream对象代表一个对Twitter的HTTP请求;当该请求消失时,这就是流的结束。此时调用on_error方法,因此它只是为您提供了一个说明流已结束的位置,用于记录目的或其他任何方法。此方法不允许您重新启动流。

如果您希望机器人继续运行,您必须创建一个新的流,或者让操作系统重新启动程序,或者只是将整个程序包装在while(1){}循环中。

希望这有助于其他人!