Ci sono comandi della console per guardare cosa è in coda e per cancellare la coda in Sidekiq?

StackOverflow https://stackoverflow.com//questions/12683222

  •  12-12-2019
  •  | 
  •  

Domanda

Sono abituato a utilizzare il metodo ritardato_jobs per entrare nella console per vedere cosa è in coda e la facilità di cancellare la coda quando necessario.Ci sono comandi simili a Sidekiq per questo?Grazie!

È stato utile?

Soluzione

Non ho mai usato latekiq, quindi è possibile che ci siano metodi solo per la visualizzazione dei lavori in coda, ma sarebbero davvero solo involucri intorno ai comandi di redis, dal momento che è fondamentalmente tutto Sidekiq (e Resque) è: Sfortunatamente, la rimozione di un lavoro specifico è un po 'più difficile che dovresti copiare il suo valore esatto:

# Remove a specific job from a queue
Sidekiq.redis { |r| r.lrem "queue:app_queue", -1, "the payload string stored in Redis" }
.

Potresti fare tutto questo ancora più facilmente tramite redis-cli:

$ redis-cli
> select 0 # (or whichever namespace Sidekiq is using)
> keys * # (just to get an idea of what you're working with)
> smembers queues
> lrange queues:app_queue 0 -1
> lrem queues:app_queue -1 "payload"
.

Altri suggerimenti

C'è un Ergonomico API per la visualizzazione e la gestione delle code .

Non è richiesto per impostazione predefinita.

require 'sidekiq/api'
.

Ecco l'estratto:

# get a handle to the default queue
default_queue = Sidekiq::Queue.new 

# get a handle to the mailer queue
mailer_queue = Sidekiq::Queue.new("mailer") 

# How many jobs are in the default queue?
default_queue.size # => 1001

# How many jobs are in the mailer queue?
mailer_queue.size # => 50

#Deletes all Jobs in a Queue, by removing the queue.    
default_queue.clear
.

Puoi anche ottenere alcune statistiche di riepilogo.

stats = Sidekiq::Stats.new

# Get the number of jobs that have been processed.
stats.processed # => 100

# Get the number of jobs that have failed.    
stats.failed # => 3

# Get the queues with name and number enqueued.
stats.queues # => { "default" => 1001, "email" => 50 }

#Gets the number of jobs enqueued in all queues (does NOT include retries and scheduled jobs).
stats.enqueued # => 1051 
.

Se c'è qualche lavoro programmato.È possibile eliminare tutti i lavori utilizzando il seguente comando:

Sidekiq::ScheduledSet.new.clear
.

Se ci sono delle code che si desidera eliminare tutti i lavori è possibile utilizzare il seguente comando:

  Sidekiq::Queue.new.clear
.

I lavori di tentativi possono essere rimossi dal seguente comando anche:

Sidekiq::RetrySet.new.clear
.

Ci sono ulteriori informazioni qui al seguente link, è possibile effettuare il checkout: https://github.com/mperham/sidekiq/wiki/api

C'è un'API per accedere alle informazioni in tempo reale su lavoratori, code e posti di lavoro.
Visita qui https://github.com/mperham/sidekiq/wiki/api

.

Una soluzione alternativa è quella di utilizzare il modulo di test (richiede 'Sidekiq / Test') e drenare il lavoratore (MyWorker.Drain).

E se vuoi cancellare la coda di riproduzione Sidekiq, è questa: Sidekiq::RetrySet.new.clear

$ redis-cli
> select 0 # (or whichever namespace Sidekiq is using)
> keys * # (just to get an idea of what you're working with)
> smembers queues
> lrange queue:queue_name 0 -1 # (queue_name must be your relevant queue)
> lrem queue:queue_name -1 "payload"
.

C'erano "lavoratori" in coda predefinita e sono stato in grado di vederli sebbene interfaccia web.Ma non erano disponibili da Console se ho usato Sidekiq :: Queue.new.size

irb(main):002:0> Sidekiq::Queue.new.size
2014-03-04T14:37:43Z 17256 TID-oujb9c974 INFO: Sidekiq client with redis options {:namespace=>"sidekiq_staging"}
=> 0
.

Usando Redis-cli Sono stato in grado di trovarli

redis 127.0.0.1:6379> keys *
    1) "sidekiq_staging:worker:ip-xxx-xxx-xxx-xxx:7635c39a29d7b255b564970bea51c026-69853672483440:default"
    2) "sidekiq_staging:worker:ip-xxx-xxx-xxx-xxx:0cf585f5e93e1850eee1ae4613a08e45-70328697677500:default:started"
    3) "sidekiq_staging:worker:ip-xxx-xxx-xxx-xxx:7635c39a29d7b255b564970bea51c026-69853672320140:default:started"
    ...
.

La soluzione era:

irb(main):003:0>  Sidekiq.redis { |r| r.del "workers", 0, -1 }
=> 1
.

Anche nel Sidekiq V3 c'è un comando

Sidekiq::Workers.new.prune
.

Ma per qualche ragione non ha funzionato per me quel giorno

Attività di rastrello per Cancella tutte le code Sidekiq:

namespace :sidekiq do
  desc 'Clear sidekiq queue'
  task clear: :environment do
    require 'sidekiq/api'
    Sidekiq::Queue.all.each(&:clear)
  end
end
.

Uso:

rake sidekiq:clear
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top