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 module Jobs
class HttpPost class HttpPost
extend ResqueJobLogging
@queue = :http @queue = :http
def self.perform(url, body, tries_remaining) def self.perform(url, body, tries_remaining)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,6 @@
module Jobs module Jobs
class SocketWebfinger class SocketWebfinger
extend ResqueJobLogging
@queue = :socket_webfinger @queue = :socket_webfinger
def self.perform(user_id, account, opts={}) def self.perform(user_id, account, opts={})
finger = Webfinger.new(account) finger = Webfinger.new(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