Resque на Heroku не работает должным образом

Я использую 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

В «консоли героку» я делаю:

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

В «журналах героев» я вижу 4 «пута», когда я запускаю приведенный выше код в первый раз. Но запустив его во второй раз, вы получите только «foobar». Остальные "путы" не отображаются.....

Я подозреваю, что он не может запустить "media = Media.find(media_id)" во второй раз. Это происходит только на рабочем сервере Heroku. На нашей локальной машине разработки мы не сталкиваемся с этой проблемой... Кто-нибудь знает, что не так?

PS. Я попытался включить журналы Heroku, но по-прежнему не получил никакого полезного ответа. Я следовал этому руководству, чтобы настроить Heroku с Resque


person Christian Fazzini    schedule 14.03.2011    source источник


Ответы (1)


Похоже, ваша работа не удалась (вероятно, вы правы насчет строки «media = Media.find»). Просмотрите интерфейс администратора resque. Ищите неудачные задания, там вы найдете след каждого неудачного задания.

Надеюсь это поможет.

person chischaschos    schedule 19.04.2011