2013-04-06 6 views
2

Я пытаюсь загрузить простое приложение ruby ​​на heroku, которое периодически запускает фоновое задание с использованием resque, который проверяет учетную запись электронной почты. Он отлично работает на месте с мастером, но продолжает падать на героку.

Я думаю, может быть, Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch происходит от моего цикла while, который вечен и поэтому длиннее 60 секунд? Должен ли я использовать какой-то другой процесс для запуска smsnotify.rb?

Любая помощь будет чрезвычайно оценена!

Мои Heroku журналы:

2013-04-06T20:49:15+00:00 heroku[slugc]: Slug compilation finished 
2013-04-06T20:49:18+00:00 heroku[web.1]: Starting process with command `bundle exec ruby smsnotify.rb -p 9129` 
2013-04-06T20:49:21+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.0/lib/active_support/multibyte.rb:26: warning: already initialized constant VALID_CHARACTER 
2013-04-06T20:50:19+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 
2013-04-06T20:50:19+00:00 heroku[web.1]: Stopping process with SIGKILL 
2013-04-06T20:50:20+00:00 heroku[web.1]: Process exited with status 137 
2013-04-06T20:50:20+00:00 heroku[web.1]: State changed from starting to crashed 

Мои PROCFILE:

web: bundle exec ruby smsnotify.rb -p $PORT 
resque: env TERM_CHILD=1 bundle exec rake jobs:work 

smsnotify.rb:

require "./email_checker" 
require 'hirefire' 
require 'resque' 
Resque.redis = 'redis://redistogo:removed:removed/' 
HireFire::Initializer.initialize! 

while true do 
    Resque.enqueue(EmailChecker) 
    sleep 30 
    puts "Starting Email Job" 
end 
+3

я не делаю подумайте, что вы действительно можете это сделать в героике. Альтернативой, которую они предлагают для фоновой обработки, является Delayed Job (DJ). Это объясняет весь процесс лучше: https://devcenter.heroku.com/articles/delayed-job, помните, что вы будете платить за использование «работника». – fmendez

+0

Спасибо - я переключился на использование resque и проверку учетной записи электронной почты в фоновом режиме. Опять же, это работает нормально локально, но я получаю сообщение об ошибке «Ошибка R10 (Boot timeout) -> Web не удалось связать с $ PORT в течение 60 секунд после ошибки запуска при запуске приложения на heroku. Может быть, ошибка исходит из моего цикла while, который вечен и поэтому длиннее 60 секунд? Должен ли я использовать какой-то другой процесс для запуска smsnotify.rb? – Nick5a1

+0

Я обновил вопрос. Heroku поддерживает Resque. Может ли кто-нибудь дать некоторые указания, пожалуйста? – Nick5a1

ответ

0

Вы не запуская процесс, который является обязательным к порту , поэтому он жалуется.

Вам просто нужно изменить PROCFILE сказать «рабочий» вместо «Сети»

Если у вас есть веб-интерфейс к этому, то вам будет нужен рабочий и веб

+0

, тогда я получаю следующую ошибку: «2013-04-08T20: 23: 41 + 00: 00 heroku [web.1]: запуск с помощью команды« bundle exec »rawn config.ru -p 34012 ' 2013-04-08T20: 23: 42 + 00: 00 приложение [web.1]: конфигурация /app/config.ru не найдена'. Это не приложение для рельсов, а просто рубиновое приложение. – Nick5a1

+0

это странно. Если ваш файл procfile имеет только рабочий: bundle exec ruby ​​smsnotify.rb resque: env TERM_CHILD = 1 пакет exec rake jobs: work Я не вижу, откуда будет звонить этот звонок –

 Смежные вопросы

  • Нет связанных вопросов^_^