2011-02-02 34 views
5

Tôi đang xem xét sử dụng rubygem twitter dòng EventMachine được hỗ trợ để theo dõi và ghi lại các tweet. Tôi là người mới đối với toàn bộ điều lập trình. Làm thế nào tôi có thể nói nếu bất kỳ xử lý tôi đang làm trong vòng lặp sự kiện của tôi là nguyên nhân khiến tôi bị tụt hậu? Có cách nào dễ dàng để kiểm tra không?EventMachine - làm thế nào bạn có thể biết nếu bạn đang tụt lại phía sau?

+0

Sẽ thực sự hữu ích nếu bạn cung cấp một mẫu mã đặc trưng cho mã của bạn hiển thị những gì bạn đã thử. –

Trả lời

3

EventMachine có phương thức EventMachine::Queue.size cho phép bạn xem nhanh hàng đợi hiện tại và nhận được ý tưởng lớn như thế nào.

Bạn có thể add_periodic_timer() và, trong trường hợp đó, nhận được kích thước của hàng đợi và in nó.

Nếu số không nhận được nhỏ hơn, bạn sẽ ở mức chẵn lẻ. Nếu nó đang tăng lên, bạn đang tụt lại phía sau.

+1

Chính xác những gì tôi cần. Cảm ơn bạn! – makenai

+0

Có vẻ như kích thước không phải là một phương pháp lớp học nên bạn không thể gọi nó như được viết ở đây? 'EventMachine :: Queue.size' Đây có phải là chỉ cho hàng đợi tùy chỉnh (một thể hiện của lớp đó), hoặc nó có thể được sử dụng để có được kích thước hàng đợi của lò phản ứng chính không? Tôi là loại mới để EventMachine vì vậy cảm ơn sự giúp đỡ. –

+1

Phương pháp này dành cho hàng đợi tùy chỉnh không phải là hàng đợi lò phản ứng chính. Trên thực tế, không có cách nào để có được số đếm chính xác (https://groups.google.com/forum/?fromgroups#!topic/eventmachine/7CAkYGZnwzk). Bắt độ trễ thường là một lựa chọn tốt xem câu trả lời của dj2 – trcarden

7

Bạn có thể xác định độ trễ bằng cách sử dụng bộ hẹn giờ định kỳ và in thời gian đã trôi qua. Nếu bạn đang sử dụng một bộ đếm thời gian 1 giây, bạn sẽ có khoảng 1 giây trôi qua, nếu nó lớn hơn bạn biết có bao nhiêu bạn đang làm chậm lò phản ứng.

@last = Time.now.to_f 
EM.add_periodic_timer(1) do 
    puts "LATENCY: #{Time.now.to_f - @last}" 
    @last = Time.now.to_f 
end 
Các vấn đề liên quan