我正在使用AnyEvent::Twitter::Stream
来编写Twitter机器人。我是基于事件的编程的新手,所以我非常依赖于文档。
由于这是一个僵尸程序,我希望当出现错误(例如管道损坏或超时错误)时,流将继续运行,无人监督。
如果我根本不包含错误处理程序,则整个程序会因错误而死亡。同样,如果我使用错误处理程序,例如示例文档中的内容:
on_error => sub {
my $error = shift;
warn "Error: $error";
$done->send;
},
程序死了。如果我删除" $ done-> send;"行,流被中断,程序挂起。
我已经查看了AE :: T :: S和AnyEvent的(稀疏)文档,但是我不知道我需要做些什么才能让事情继续下去。该流可以每分钟给我5,000个事件,我无法通过随机网络打嗝丢失这个事件。
感谢。
答案 0 :(得分:0)
使用此功能的其他人的解决方案:
我和一些对基于事件的东西更了解的人交谈过。基本上,每个:: Stream对象代表一个对Twitter的HTTP请求;当该请求消失时,这就是流的结束。此时调用on_error方法,因此它只是为您提供了一个说明流已结束的位置,用于记录目的或其他任何方法。此方法不允许您重新启动流。
如果您希望机器人继续运行,您必须创建一个新的流,或者让操作系统重新启动程序,或者只是将整个程序包装在while(1){}循环中。
希望这有助于其他人!