2017-01-24 29 views
1

在我Procfile我定義一個工人,如:Heroku工人跳過Resque的隊列配置?

signup_worker: env QUEUE=signups bundle exec rake resque:work 
login_worker: env QUEUE=logins bundle exec rake resque:work 

但經過部署我的代碼,我的註冊工人一直都處理註冊和登錄。

我在這裏做錯了什麼? Heroku有可能嗎?

回答

1

這裏的問題是,您正嘗試將環境變量傳遞給工作進程,但是您使用的語法錯誤。

更新您的Procfile看起來像這樣:

signup_worker: QUEUE=signups bundle exec rake resque:work 
login_worker: QUEUE=logins bundle exec rake resque:work 

如果你想一個環境變量傳遞給一個過程在線,你需要做的是在形式VARIABLE=value <command>

我剛剛在測功機上對自己進行了測試,它效果很棒!

+0

做了你說的但仍然。我的第一個工人獲得第二個消息,反之亦然。 –

+0

你確定你正在解析環境變量嗎?如果你修改你的工作者代碼並讓它輸出'QUEUE'環境變量,你會發現它確實具有正確的值。如果是這種情況,那麼您的resque設置可能會存在另一個與環境變量中的錯誤無關的潛在問題。 – rdegges

+0

非常感謝。你打開了我的想法除了我的Procfile以外的其他問題。我的Rakefile上有一個resque:setup,其值如下:QUEUE ='*'。 –