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