EventMachine - как узнать, отстаете ли вы? - PullRequest
5 голосов
/ 02 февраля 2011

Я собираюсь использовать рутигем Twitter-Stream на EventMachine для отслеживания и захвата твитов. Я немного новичок в программировании. Как я могу определить, что какая-то обработка, которую я выполняю в цикле обработки событий, вызывает у меня отставание? Есть ли простой способ проверить?

Ответы [ 2 ]

7 голосов
/ 06 февраля 2011

Вы можете определить задержку, используя периодический таймер и распечатывая прошедшее время. Если вы используете таймер на 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 
3 голосов
/ 02 февраля 2011

EventMachine имеет метод EventMachine::Queue.size, который позволяет вам взглянуть на текущую очередь и понять, насколько она велика.

Вы можете add_periodic_timer() и в этом случае получить размер очереди и распечатать его.

Если число не уменьшается, вы находитесь в паритете.Если он идет вверх, вы отстаете.

...