Я изучаю возможность использования rubygem twitter-stream на базе EventMachine для отслеживания и захвата твитов. Я новичок во всем, что касается событийного программирования. Как я могу определить, не приводит ли какая-либо обработка, которую я выполняю в своем цикле событий, к отставанию? Есть ли простой способ проверить?
EventMachine — как понять, что вы отстаете?
comment
Было бы очень полезно, если бы вы предоставили сжатый образец вашего кода, показывающий, что вы пробовали.
- person the Tin Man   schedule 02.02.2011
Ответы (2)
EventMachine имеет метод EventMachine::Queue.size
, который позволяет просмотреть текущую очередь и понять, насколько она велика.
Вы можете add_periodic_timer()
и в этом случае получить размер очереди и распечатать ее.
Если число не становится меньше, вы находитесь в паритете. Если он идет вверх, вы отстаете.
person
the Tin Man
schedule
02.02.2011
Именно то, что мне было нужно. Благодарю вас!
- person makenai; 03.02.2011
Похоже, размер не является методом класса, поэтому вы не можете вызвать его, как здесь написано?
EventMachine::Queue.size
Это только для пользовательских очередей (экземпляр этого класса) или его можно использовать для получения размера очереди основного реактора? Я новичок в EventMachine, поэтому спасибо за помощь.
- person Brian Armstrong; 27.12.2011
Этот метод предназначен для пользовательских очередей, а не для основной очереди реактора. На самом деле нет способа получить точное количество см. (группы. google.com/forum/?fromgroups#!topic/eventmachine/). Получение задержки часто является хорошей альтернативой, см. ответ dj2.
- person trcarden; 04.08.2012
Вы можете определить задержку, используя периодический таймер и распечатав прошедшее время. Если вы используете таймер на 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
person
dj2
schedule
06.02.2011