EventMachine - как узнать, отстаете ли вы?

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

2 ответа

Решение

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

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

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

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