Add benchmarks and logging to resque jobs

This commit is contained in:
Raphael 2010-12-16 16:48:19 -08:00
parent f3ced6d96c
commit 4da97be84b
10 changed files with 36 additions and 3 deletions

View file

@ -1,5 +1,6 @@
module Jobs
class HttpPost
class HttpPost
extend ResqueJobLogging
@queue = :http
def self.perform(url, body, tries_remaining)

View file

@ -1,5 +1,6 @@
module Jobs
class InviteUser
extend ResqueJobLogging
@queue = :mail
def self.perform(sender_id, email, aspect_id, invite_message)
user = User.find(sender_id)

View file

@ -1,5 +1,6 @@
module Jobs
class MailRequestAcceptance
extend ResqueJobLogging
@queue = :mail
def self.perform(recipient_id, sender_id)
Notifier.request_accepted(recipient_id, sender_id).deliver

View file

@ -1,5 +1,6 @@
module Jobs
class MailRequestReceived
extend ResqueJobLogging
@queue = :mail
def self.perform(recipient_id, sender_id)
Notifier.new_request(recipient_id, sender_id).deliver

View file

@ -1,5 +1,6 @@
module Jobs
class PostToServices
class PostToServices
extend ResqueJobLogging
@queue = :http_service
def self.perform(user_id, post_id, url)
user = User.find_by_id(user_id)

View file

@ -1,5 +1,6 @@
module Jobs
class Receive
extend ResqueJobLogging
@queue = :receive
def self.perform(user_id, xml, salmon_author_id)
user = User.find(user_id)

View file

@ -1,5 +1,6 @@
module Jobs
class ReceiveLocal
extend ResqueJobLogging
@queue = :receive_local
def self.perform(user_id, person_id, object_type, object_id)
user = User.find(user_id)

View file

@ -1,5 +1,6 @@
module Jobs
class ReceiveSalmon
extend ResqueJobLogging
@queue = :receive_salmon
def self.perform(user_id, xml)
user = User.find(user_id)

View file

@ -1,5 +1,6 @@
module Jobs
class SocketWebfinger
extend ResqueJobLogging
@queue = :socket_webfinger
def self.perform(user_id, account, opts={})
finger = Webfinger.new(account)
@ -7,7 +8,7 @@ module Jobs
result = finger.fetch
result.socket_to_uid(user_id, opts)
rescue
Diaspora::WebSocket.queue_to_user(user_id,
Diaspora::WebSocket.queue_to_user(user_id,
{:class => 'people',
:status => 'fail',
:query => account,

24
lib/resque_job_logging.rb Normal file
View file

@ -0,0 +1,24 @@
module ResqueJobLogging
def around_perform_log_job(*args)
log_string = "event=resque_job job=#{self} "
error = nil
time = Benchmark.realtime{
begin
yield
rescue Exception => e
error = e
end
}*1000
if error
log_string += "status=error error=\"#{error}\" "
else
log_string += "status=complete "
end
log_string += "ms=#{time} "
arg_count = 1
args.each{|arg| log_string += "arg#{arg_count}=\"#{arg[0..30]}\" "}
Rails.logger.info(log_string)
raise error if error
end
end