2014-07-22 117 views
69

我在Rails應用程序中使用sidekiq作爲後臺任務。現在工作的數量變多了,所以我想清除所有的工作。我在控制檯中嘗試了以下命令:如何清除sidekiq的所有工作?

Sidekiq::Queue.new.clear 

但它給出以下錯誤。

NameError: uninitialized constant Sidekiq::Queue 

如何從sidekiq清除所有工作?

+0

嘗試'包括:前「sidekiq''之前 – Benj

+0

@BenjaminSinclaire它給人的TypeError錯誤的參數類型字符串(預期模塊) –

+2

嘗試'需要」 sidekiq'' –

回答

125

你可以這樣做,因爲它說的issue 1077,或者由於本blog at noobsippets

報道都表明,我們做了以下內容,

Sidekiq.redis { |conn| conn.flushdb }

+4

與命令行中的'redis-cli flushdb'相同。 –

+0

這似乎重置我正在使用的Rails應用程序的身份驗證(這意味着我必須將cookie複製回到我的HTTP客戶端)。有沒有辦法阻止? – brandaemon

+1

你好,Brandeamon。你是否在使用redis來控制你的項目的會話?因爲這些命令要「清除」存儲在redis中的所有數據,所以相當於關係數據庫中的drop database或drop table。 – jonathanccalixto

35

以下命令S:能鐵軌控制檯上完成等工作對我來說:

require 'sidekiq/api' 

# 1. Clear retry set 

Sidekiq::RetrySet.new.clear 

# 2. Clear scheduled jobs 

Sidekiq::ScheduledSet.new.clear 

# 3. Clear 'Processed' and 'Failed' jobs statistics (OPTIONAL) 

Sidekiq::Stats.new.reset 
6
redis-cli flushdb 

您還可以使用redis-cli flushall

1

由於最新Sidekiq的,只是炸掉它:

require 'sidekiq/api' 

q = Sidekiq::Queue.new 
q. 

是,該命令清除全部是從字面上一個炸彈表情符號。也適用於Sidekiq::RetrySet

或者如果你沒有什麼好玩的,你可以使用q.clear