【发布时间】:2011-02-02 06:37:52
【问题描述】:
我正在研究使用 EventMachine 驱动的 twitter-stream rubygem 来跟踪和捕获推文。我对整个事件编程的事情有点陌生。如何判断我在事件循环中所做的任何处理是否导致我落后?有没有简单的检查方法?
【问题讨论】:
-
如果您能提供一个精简的代码示例来展示您所尝试的内容,这将非常有帮助。
标签: ruby twitter eventmachine
我正在研究使用 EventMachine 驱动的 twitter-stream rubygem 来跟踪和捕获推文。我对整个事件编程的事情有点陌生。如何判断我在事件循环中所做的任何处理是否导致我落后?有没有简单的检查方法?
【问题讨论】:
标签: ruby twitter eventmachine
您可以通过使用周期性计时器并打印出经过的时间来确定延迟。如果你使用 1 秒的计时器,你应该已经过去了大约 1 秒,如果它更大,你就会知道你在减慢反应堆的速度。
@last = Time.now.to_f
EM.add_periodic_timer(1) do
puts "LATENCY: #{Time.now.to_f - @last}"
@last = Time.now.to_f
end
【讨论】:
EventMachine 有一个EventMachine::Queue.size 方法,可以让您查看当前队列并了解它有多大。
您可以add_periodic_timer(),在这种情况下,获取队列的大小并打印出来。
如果这个数字没有变小,你就处于平价状态。如果它在上升,你就落后了。
【讨论】:
EventMachine::Queue.size这只是用于自定义队列(该类的一个实例),还是可以用来获取主反应器的队列大小?我是 EventMachine 的新手,所以感谢您的帮助。