我想知道每次工作时的执行时间。好像有一个宝石sidekiq-statistic可以做我想要的,甚至有GUI,但遗憾的是它不适用于sidekiq 5.我可以从执行方法中获取此类信息不知何故?我宁愿避免手动编写基准测试代码,将我的方法包装到Benchmark块中
答案 0 :(得分:0)
您可以从日志输出中删除它。
答案 1 :(得分:0)
你可以尝试这个Scout,这是一个很棒的工具,可以提供详细的方法指标。它也适用于Heroku,它们都有附加功能。
答案 2 :(得分:0)
您可以在perform方法中进行计算,然后将这些计算记录到rails日志中。
def preform(task,*params)
...start metric times...
... do your computations ...
...end metric times...
Rails.logger.info "Your Metrics..."
end
我在heroku上使用Paper-trail取得了成功,只看工作人员的工作开始和完成时间。
答案 3 :(得分:0)
正如Mike says一样,它已经在日志中。
要快速查看某个工人昨天的平均完成时间:
from datetime import datetime
from jinja2 import Template
from email.utils import format_datetime
def render_email(**data):
with open('email_template.eml') as f:
template = Template(f.read())
return template.render(**data)
data = {'date': format_datetime(datetime.now()),
'to': 'bob@example.com',
'from': 'tarek@ziade.org',
'subject': "Your Tarek's Burger order",
'name': 'Bob',
'items': [{'name': 'Cheeseburger', 'price': 4.5}, {'name': 'Fries', 'price': 2.}, {'name': 'Root Beer', 'price': 3.}]}
print(render_email(**data))
答案 4 :(得分:0)
我有一个问题,找出哪个任务花费的时间最长,所以我写了一个分析日志的小任务 好消息:我找到了,所以我要分享我的代码 :-)
希望它不包含任何错误
desc "sidekiq run statistics"
task sidekiq_run_statistics: :environment do
# 2021-02-19T06:04:23.088Z 20240 TID-ov75i75aw Importer::PriceJob JID-95245ccf3933fe1f5897d52b INFO: done: 193.952 sec
file = File.open( Rails.root.join("log","sidekiq.log"))
job_stats = {}
file.each_line do |line|
job_stat = line.split(" ")
if job_stat[8] == "sec"
time = job_stat[7].to_f
job_stats[ job_stat[3] ] ||= {longest_run_time: 0, total_run_time:0, total_runs: 0 }
job_stats[ job_stat[3] ][:longest_run_time] = time if job_stats[ job_stat[3] ][:longest_run_time] < time
job_stats[ job_stat[3] ][:total_run_time]+=time
job_stats[ job_stat[3] ][:total_runs]+=1
end
end
file.close
puts %w(total_runs total_run_time longest_run_time job ).collect{|i| i.rjust(16) }.join(" ")
puts "="*80
job_stats.keys.each do |key|
puts( [job_stats[key][:total_runs],job_stats[key][:total_run_time].round(3), job_stats[key][:longest_run_time].round(3), key ].collect{|i| i.to_s.rjust(16) }.join(" "))
end
end
样本输出
total_runs total_run_time longest_run_time job
==================================================================
56 68.909 7.641 Job1
56 98.9 11.599 Job2
47 193.909 13.795 Job3
234 1806.76 20.644 Job4