Saya terbiasa menggunakan metode delay_jobs untuk masuk ke konsol untuk melihat apa yang ada di antrian, dan kemudahan membersihkan antrian saat diperlukan. Apakah ada perintah serupa di Sidekiq untuk ini? Terima kasih!
ruby-on-rails
sidekiq
ketekunan
sumber
sumber
Jawaban:
Saya belum pernah menggunakan Sidekiq, jadi mungkin ada metode hanya untuk melihat pekerjaan yang diantrekan, tetapi mereka benar-benar hanya menjadi pembungkus di sekitar perintah Redis, karena pada dasarnya semua Sidekiq (dan Resque) adalah:
Sayangnya, menghapus pekerjaan tertentu sedikit lebih sulit karena Anda harus menyalin nilai tepatnya:
Anda dapat melakukan semua ini dengan lebih mudah melalui
redis-cli
:sumber
Sidekiq::Client.registered_queues
telah diganti denganSidekiq::Queue.all
danSidekiq::Client.registered_workers
denganSidekiq::Workers.new
, lihat: github.com/mperham/sidekiq/blob/…Ada API ergonomis untuk melihat dan mengatur antrian .
Ini tidak diperlukan secara default.
Berikut kutipannya:
Anda juga bisa mendapatkan beberapa statistik ringkasan.
sumber
jika ada pekerjaan terjadwal. Anda dapat menghapus semua pekerjaan menggunakan perintah berikut:
jika ada antrian yang ingin Anda hapus semua pekerjaan, Anda dapat menggunakan perintah berikut:
Mencoba Lagi Pekerjaan juga dapat dihapus dengan perintah berikut:
Ada informasi lebih lanjut di sini di tautan berikut, Anda dapat melakukan pembayaran: https://github.com/mperham/sidekiq/wiki/API
sumber
Ada API untuk mengakses informasi waktu nyata tentang pekerja, antrian, dan pekerjaan.
Kunjungi di sini https://github.com/mperham/sidekiq/wiki/API
sumber
Solusinya adalah dengan menggunakan modul pengujian (memerlukan 'sidekiq / pengujian') dan menguras pekerja (MyWorker.drain).
sumber
Ada 'pekerja' yang digantung dalam antrean default dan saya dapat melihatnya melalui antarmuka web. Tetapi mereka tidak tersedia dari konsol jika saya menggunakan Sidekiq :: Queue.new.size
Dengan menggunakan redis-cli, saya dapat menemukannya
Solusinya adalah:
Juga di Sidekiq v3 ada perintah
Tetapi untuk beberapa alasan itu tidak berhasil untuk saya hari itu
sumber
Dan jika Anda ingin menghapus antrian coba ulang sidekiq, ini adalah:
Sidekiq::RetrySet.new.clear
sumber
sumber
keys *
produksi kecuali Anda menggunakan redis itu hanya untuk sidekiq. Terutama jangan menjalankannya jika Anda memiliki dataset besar (cache, dll). Redis adalah single-threaded dankeys *
blok - ini dapat mengakibatkan beberapa menit downtime pada kumpulan data besar (beberapa Gbs).Rake tugas untuk menghapus semua antrian sidekiq:
Pemakaian:
sumber