Skip to content

Instantly share code, notes, and snippets.

@spalenza
Last active June 3, 2019 18:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save spalenza/bbb500c811b96852daa6 to your computer and use it in GitHub Desktop.
Save spalenza/bbb500c811b96852daa6 to your computer and use it in GitHub Desktop.
Remove Resque Workers
# busca as chaves de um processo específico
Resque.redis.keys('*.DailyReportCachedProcessor')
# => ["concurrent.count.DailyReportCachedProcessor", "concurrent.queue_availability.DailyReportCachedProcessor", "concurrent.queue.high.DailyReportCachedProcessor"]
# verifique quantos jobs dessse processo estao rodando no resque
# utilize a chave concurrent.count.* para setar
Resque.redis.set('concurrent.count.DailyReportCachedProcessor', 8)
# limpar a lista
Resque.redis.del('concurrent.queue.medium.WelshersReportCacherProcessor')
# Correção de valores com a quantidade de processos que está rodando no momento
def count_workers(current_worker)
workers = Resque::Worker.working.map do |worker|
job = worker.job
job && job.fetch('payload', {}).fetch('class', nil)
end
workers.inject(Hash.new(0)) { |h, e| h[e] += 1 ; h }.fetch(current_worker, 0)
end
c_workres = DinamicsProcessor.stats(:false).fetch(:identifiers).keys
c_workres.each do |worker|
Resque.redis.set("concurrent.count.#{worker}", count_workers(worker))
end
key = 'queue:low'
members = Resque.redis.lrange(key, 0, -1).map { |v| JSON.parse(v) };nil
members.find_all { |i| i["class"] == "TrainingymPersonUpdater" }.size
Resque::Job.destroy('medium', 'EndpointProcessor')
### Mata processos rodando
Resque::Worker.working.each do |worker|
job = worker.job
klass = job && job.fetch('payload', {}).fetch('class', nil)
if klass && klass == 'ReportProcessor'
worker.done_working
worker.unregister_worker
end
end
ws = Resque.workers.find_all do |worker|
Time.current - worker.processing['run_at'].to_time > 300
end
ws.each do |w|
w.done_working
w.unregister_worker
end
#Limpando failed de uma determinada classe
cleaner = Resque::Plugins::ResqueCleaner.new
cleaner.clear {|j| j.klass?(‘InvoiceMicrosigaProcessor’)}
# Restry and Clear
cleaner = Resque::Plugins::ResqueCleaner.new
cleaner.requeue(true) {|j| j.klass?(WelshersReportCacherProcessor)}
#Sobrescrevendo limite
require ‘resque-cleaner’
module Resque::Plugins
ResqueCleaner::Limiter.default_maximum = 100_000
end
ws = Resque.workers.find_all do |worker|
worker.id =~ /^ip-10-252-156-42/
end
ws.each do |w|
w.done_working
w.unregister_worker
end
workers = Resque::Worker.working.map do |worker|
job = worker.job
job && job.fetch('payload', {}).fetch('class', nil)
end
workers.inject(Hash.new(0)) { |h, e| h[e] += 1 ; h }
jobs_m = [
/^smartsystem-jobs11/,
/^smartsystem-jobs12/,
/^smartsystem-jobs13/,
/^smartsystem-jobs14/,
]
ws = Resque.workers.find_all do |worker|
jobs_m.any? { |job| worker.id =~ job }
end
ws.each do |w|
w.done_working
w.unregister_worker
end
total_locations = Location.active.count
date = 1.day.ago.to_date.to_s
computed_location_ids = DailyReportCache.where(reference_date: date).pluck(:location_id)
Location.active.where.not(id: computed_location_ids).order(first_due_at: :desc).pluck(:id).each do |location_id|
Resque.enqueue(
Core::Smart::DailyReportCachedProcessor,
date.to_s,
total_locations,
location_id
)
end
FinLocationProcessor.stats(:false)
@spalenza
Copy link
Author

Resque.info
Resque.queues
Resque.size('sales_force')

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment