我在后台工作中使用 Resque + RedisToGo。我在 Heroku 上运行后台任务时遇到问题。这很奇怪,因为我第一次运行后台作业时,它会毫无问题地执行。但是当我再次运行它时,它不会执行。我必须每隔一次运行“heroku restart”才能成功完成后台......
例如。如果我的 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'。其他“看跌期权”不显示.....
我怀疑它第二次无法运行“media = Media.find(media_id)”。这只发生在 Heroku 的生产服务器上。在我们的本地开发机器上,我们没有遇到这个问题....有人知道出了什么问题吗?
PS。我尝试启用Heroku logs,但仍然没有得到任何有用的响应。我已按照本教程使用 Resque 设置 Heroku