Подтвердить что ты не робот

Выполнение задач Cron на Heroku

Я видел, что Heroku взимает $15/mo за запуск Delayed Job и $3/mo для ежедневного выполнения задач cron. Можно ли полностью пропустить это и запустить мои собственные задачи cron вручную? Или они каким-то образом выясняют, что я выполняю задачи cron?

4b9b3361

Ответ 1

Я не совсем уверен, что вы подразумеваете под "запускать собственные задачи cron вручную". В частности, для cron вам необходим доступ к crontab, который они могут контролировать, так как они являются их серверами. Если у вас есть другой способ сделать это, это, вероятно, будет хорошо, но имейте в виду, что ваше приложение не привязано к определенному серверу при работе под Heroku и что сервер будет меняться между выполнением.

Кроме того, если они не изменили его с тех пор, как я проверил последний раз, вы можете запускать ежедневные задания cron бесплатно, но почасовая оплата стоит $3/мес.

РЕДАКТИРОВАТЬ: Да, ежедневные кроны бесплатны. См. http://addons.heroku.com/.

Ответ 2

Если вы установите на свой компьютер Heroku gem, вы можете вручную запустить свои задачи cron следующим образом:

$ heroku rake cron
(in /disk1/home/slugs/xxxxxx_aa515b2_6c4f/mnt)
Running cron at 2010/04/25 10:28:54...

Это будет выполнять тот же самый код, что и ежедневный/ежечасный cron-надпись Heroku; т.е. для этого в вашем приложении должен быть Rakefile с задачей cron, например:

desc "Runs cron maintenance tasks."
task :cron do
  puts "Running cron at #{Time.now.strftime('%Y/%m/%d %H:%M:%S')}..."
  # TODO: your cron code goes here
end

Теперь просто добавьте команду heroku rake cron в crontab на любом вашем сервере Unix или даже прямо на свой персональный компьютер crontab, если вы используете Linux или Mac OS X, и вы можете планировать задания cron для вашего приложения Heroku, как вам будет угодно, и без взимания платы за него.

Ответ 3

Да, я успешно использовал задание cron на моем локальном сервере, который по существу работает

$ heroku rake <rake task>

в любые промежутки времени, которые я требовал. Я использовал их как для осины, так и для бамбуковых стеков.

Ответ 4

Вы также можете просто установить gem как rufus-scheduler, если вы используете приложение rails и планируете настройку таким образом. Я не знаю, по какой-то причине это плохая практика, но это то, что я делаю с моим приложением, и, похоже, это работает нормально.

Ответ 5

Если вы хотите иметь запланированные задания, вы также можете использовать http://guardiano.getpeople.in, который является бесплатным сервисом (для 10 заданий) для планирования заданий.

Вам просто нужно настроить конечную точку HTTP в своем приложении, чтобы получать уведомления о событиях в POST или GET, а также вы можете установить некоторые дополнительные параметры для предотвращения неавторизованных действий.

Итак, вы задали задание в Guardiano, которое будет cal http://yourapp.com/youraction и оставить "минуты" пустым, если вы хотите, чтобы действие выполнялось один раз в будущее или задание минут на то, что вы хотите запустить свое действие каждые X минут. Таким образом, вам нужно создать свою конечную точку для своего приложения, и когда этот EP называется, вы что-то выполняете.

Итак, ваше приложение может спать, и вам не нужно тратить деньги и время на создание рабочих мест и заботиться о том, чтобы они работали правильно.

ИМХО, если вам нужно что-то быстро для MVP, или вам нужно настроить множество заданий для разных приложений, чем бесплатный сервис вроде того, где вы действительно можете использовать аутсорсинг cronjobs.

Было так же, как Heroku Addon назвал Temporize, но я не уверен, что все еще жив и работает