1

我在后台工作中使用 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

4

1 回答 1

0

似乎你的工作失败了(可能你对'media = Media.find'行是正确的)。查看 resque 管理界面。寻找失败的工作,在那里你会找到每个失败工作的回溯。

希望这可以帮助。

于 2011-04-19T02:33:43.077 回答