From 4da97be84b65117ac2a3fca5d2ea6356dde974fd Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 16 Dec 2010 16:48:19 -0800 Subject: [PATCH] Add benchmarks and logging to resque jobs --- app/models/jobs/http_post.rb | 3 ++- app/models/jobs/invite_user.rb | 1 + app/models/jobs/mail_request_acceptance.rb | 1 + app/models/jobs/mail_request_received.rb | 1 + app/models/jobs/post_to_services.rb | 3 ++- app/models/jobs/receive.rb | 1 + app/models/jobs/receive_local.rb | 1 + app/models/jobs/receive_salmon.rb | 1 + app/models/jobs/socket_webfinger.rb | 3 ++- lib/resque_job_logging.rb | 24 ++++++++++++++++++++++ 10 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 lib/resque_job_logging.rb diff --git a/app/models/jobs/http_post.rb b/app/models/jobs/http_post.rb index 319276d41..5a63a4198 100644 --- a/app/models/jobs/http_post.rb +++ b/app/models/jobs/http_post.rb @@ -1,5 +1,6 @@ module Jobs - class HttpPost + class HttpPost + extend ResqueJobLogging @queue = :http def self.perform(url, body, tries_remaining) diff --git a/app/models/jobs/invite_user.rb b/app/models/jobs/invite_user.rb index 4629f4b90..c9ec85476 100644 --- a/app/models/jobs/invite_user.rb +++ b/app/models/jobs/invite_user.rb @@ -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) diff --git a/app/models/jobs/mail_request_acceptance.rb b/app/models/jobs/mail_request_acceptance.rb index 7cdeb6ae0..d0d07775a 100644 --- a/app/models/jobs/mail_request_acceptance.rb +++ b/app/models/jobs/mail_request_acceptance.rb @@ -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 diff --git a/app/models/jobs/mail_request_received.rb b/app/models/jobs/mail_request_received.rb index b57e16fd6..0c2d66095 100644 --- a/app/models/jobs/mail_request_received.rb +++ b/app/models/jobs/mail_request_received.rb @@ -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 diff --git a/app/models/jobs/post_to_services.rb b/app/models/jobs/post_to_services.rb index b94e16cb5..e29b1d609 100644 --- a/app/models/jobs/post_to_services.rb +++ b/app/models/jobs/post_to_services.rb @@ -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) diff --git a/app/models/jobs/receive.rb b/app/models/jobs/receive.rb index a37953498..d653f175a 100644 --- a/app/models/jobs/receive.rb +++ b/app/models/jobs/receive.rb @@ -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) diff --git a/app/models/jobs/receive_local.rb b/app/models/jobs/receive_local.rb index ebe84bbdc..d976d629f 100644 --- a/app/models/jobs/receive_local.rb +++ b/app/models/jobs/receive_local.rb @@ -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) diff --git a/app/models/jobs/receive_salmon.rb b/app/models/jobs/receive_salmon.rb index b529bd7be..7fad0cc3c 100644 --- a/app/models/jobs/receive_salmon.rb +++ b/app/models/jobs/receive_salmon.rb @@ -1,5 +1,6 @@ module Jobs class ReceiveSalmon + extend ResqueJobLogging @queue = :receive_salmon def self.perform(user_id, xml) user = User.find(user_id) diff --git a/app/models/jobs/socket_webfinger.rb b/app/models/jobs/socket_webfinger.rb index edad56451..633f7b8e6 100644 --- a/app/models/jobs/socket_webfinger.rb +++ b/app/models/jobs/socket_webfinger.rb @@ -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, diff --git a/lib/resque_job_logging.rb b/lib/resque_job_logging.rb new file mode 100644 index 000000000..fe6343139 --- /dev/null +++ b/lib/resque_job_logging.rb @@ -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