Может ли задание Rake на Heroku истечь? - PullRequest
4 голосов
/ 22 февраля 2010

Я использую Heroku и хотел бы иметь скрипт (на другом сервере), вызываемый через cron, который периодически запрашивает действие в моем приложении Heroku. Это действие, в свою очередь, запустит некоторую обработку, которая может занять 1 или 2 минуты. Я полагаю, что у Heroku есть ограничение в 30 секунд, я думал, что вместо этого можно вызвать задачу Rake из действия моего контроллера.

Будет ли это работать? Мне любопытно, если кто-нибудь попробовал это еще.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 22 февраля 2010

Задача rake будет работать до тех пор, пока вы не используете HTTP-запрос в качестве прокси-сервера для ее запуска. Фактически, если задача разветвляется из запроса HTTP, время ожидания будет таким же, как и у запроса HTTP.

Вы должны использовать другой метод для запуска задания. Либо crontab (на стороне Heroku), либо работник в качестве хороших решений.

2 голосов
/ 12 мая 2011

Я только что создал драгоценный камень, чтобы решить именно эту проблему. Это позволяет вам ставить в очередь любую рейк-задачу как delayed_job, например

rake delay:db:seed

, который выполнит

rake db:seed

в качестве отложенного задания. Вы можете найти его на http://rubygems.org/gems/delayed_task или http://blog.opsb.co.uk/long-running-rake-tasks-on-heroku.

2 голосов
/ 22 февраля 2010

Я бы порекомендовал использовать для этого фоновую работу на работнике. Тогда ваш периодический процесс должен будет просто запустить работника, и не имеет значения, сколько времени займет этот процесс.

...