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