2011-03-14 53 views
1

Im使用Resque + RedisToGo來處理我的後臺作業。我在Heroku上運行後臺任務時遇到問題。它的奇怪之處在於,第一次運行後臺作業時,它會毫無問題地執行。但是當我再次運行它時,它不會執行。我會跑「的Heroku重啓」,每個其他時間爲背景,以順利完成....Heroku上的Resque未正常運行

例如,如果我有我的Resque後臺操作下面的代碼:

module EncodeSong 
    @queue = :encode_song 

    def self.perform(media_id, s3_file_url) 
    puts 'foobar' 

    media = Media.find(media_id) 

    puts 'media id is supposed to be here' 
    puts media.id 
    puts s3_file_url 
    end 
end 

在「Heroku的控制檯」,我做的:

Resque.enqueue(EncodeSong, 26, 'http://actual_bucket_name.s3.amazonaws.com/unencoded/users/1/songs/test.mp3') 

在「Heroku的日誌」,我可以看到4「看跌期權」,當我運行的第一次上面的代碼,但運行它第二次,只回報。 'foobar'。其他「puts」不顯示.....

我懷疑它無法第二次運行「media = Media.find(media_id)」。這隻發生在Heroku的生產服務器上。在我們的本地開發機器上,我們不會遇到這個問題....任何人都知道什麼是錯的?

PS。我試過啓用Heroku logs,但仍然沒有得到任何有用的迴應。我跟着這個tutorial設置了Resoku的Heroku

回答

0

似乎你的工作失敗了(可能你對'media = Media.find'行是正確的)。通過resque管理界面查看。尋找失敗的工作,你會發現每個失敗工作的回溯。

希望這會有所幫助。