2017-04-07 56 views
1

我在Heroku上用Sidekiq/Redis運行Rails 5.0.x應用程序,並且我部署了一個新的代碼,用於多次重試的失敗的Sidekiq作業應該使用。如何使用新的生產Rails代碼使失敗的sidekiq作業重試?

https://github.com/mperham/sidekiq/wiki/FAQ,我看到:

Rails有兩個特點,其相關此處預先加載和自動加載 。自動加載僅在開發模式下有效,並且不是 線程安全,因此Sidekiq禁用它並僅使用預加載。 Eager 在啓動服務器時,只加載一次您的代碼 - 它的確不會在作業之間重新加載代碼 。如果你已經找到的 外部的代碼標準導軌目錄(如應用程序/模型,應用程序/控制器, 等),Sidekiq不會看到它,除非你添加的路徑, eager_load_paths在你的Rails應用程序配置:

# in config/application.rb 
module AcmeCorp 
    class Application < Rails::Application 
    config.eager_load_paths += ["#{config.root}/lib/workers"] 
    end 
end 

「因爲Sidekiq不會在作業之間重新加載代碼」,這是否意味着我無法在不開始新作業的情況下使用新的rails生產代碼?或者,如果我重新啓動失敗的作業,它會使用新部署的代碼嗎?

回答

0

事實證明,我想這個含義:

自動加載僅在開發模式下有效,而不是線程安全 所以Sidekiq禁用它,只使用預先加載。急於加載 僅在啓動服務器時加載您的代碼 - 它不會在作業之間重新加載代碼。

表示在部署完成後,必須在Heroku上重新啓動sidekiq。

,你可以用一個heroku ps:restart worker -a myapp

2

部署新代碼的Heroku會自動重新啓動所有DYNOS包括工人DYNOS做。所以你不必手動重啓它。當然,重新啓動Sidekiq後會選擇新的代碼。

+0

嗯..我想知道爲什麼我的Sidekiq重試似乎是根據我們的錯誤報告系統使用舊代碼? – Nona

相關問題