2011-02-02 12 views
5

Sto cercando di utilizzare il rubygem di Twitter-stream alimentato da EventMachine per tracciare e catturare tweet. Sono un po 'nuovo per l'intera cosa di programmazione evented. Come posso sapere se l'elaborazione che sto facendo nel mio ciclo degli eventi mi sta causando un ritardo? C'è un modo semplice per controllare?EventMachine: come puoi sapere se ti stai lasciando indietro?

+0

Sarebbe davvero d'aiuto se fornissi un campione condensato del tuo codice che mostri ciò che hai provato. –

risposta

3

EventMachine ha un metodo EventMachine::Queue.size che consente di dare un'occhiata alla coda corrente e avere un'idea di quanto è grande.

È possibile add_periodic_timer() e, in tal caso, ottenere la dimensione della coda e stamparla.

Se il numero non si riduce, si è alla parità. Se sta salendo, stai cadendo indietro.

+1

Esattamente quello di cui avevo bisogno. Grazie! – makenai

+0

Sembra che la dimensione non sia un metodo di classe, quindi non puoi chiamarlo come scritto qui? 'EventMachine :: Queue.size' È solo per code personalizzate (un'istanza di quella classe) o può essere usato per ottenere la dimensione della coda del reattore principale? Sono un po 'nuovo di EventMachine quindi grazie per l'aiuto. –

+1

Questo metodo è per code personalizzate e non per la coda del reattore principale. In effetti non c'è un modo per vedere il conteggio esatto (https://groups.google.com/forum/?fromgroups#!topic/eventmachine/7CAkYGZnwzk). Ottenere la latenza è spesso una buona alternativa vedere la risposta di dj2 – trcarden

7

È possibile determinare la latenza utilizzando un timer periodico e stampando il tempo trascorso. Se stai usando un timer di 1 secondo dovresti avere circa 1 secondo trascorso, se è maggiore sai quanto stai rallentando il reattore.

@last = Time.now.to_f 
EM.add_periodic_timer(1) do 
    puts "LATENCY: #{Time.now.to_f - @last}" 
    @last = Time.now.to_f 
end 
Problemi correlati