Нужно запустить работу в определенное время - PullRequest
2 голосов
/ 21 мая 2011

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

Как лучше всего решить задачу такого типа?

Эти уведомления должны появляться в определенное время вызова. Такие как «1 минута до конца». Поэтому он должен уметь:

  1. Запускать в произвольное время (1:22 вечера или 2:45 утра)
  2. Определяется пользовательским вводом (они устанавливают время звонка)

(Было бы неплохо, если бы это решение могло работать на Heroku)

Ответы [ 4 ]

3 голосов
/ 21 мая 2011

Вы можете использовать Heroku cron для выполнения заданий ежедневно или ежечасно.

Дневной крон предоставляется бесплатно, почасовой крон стоит 3 доллара в месяц: http://addons.heroku.com/cron.

Обычно cron запускается при первом запуске (т. Е. Если вы установите его в 15:00, он будет работать в 15:00 каждый день), но вы можете изменить это, отправив электронное письмо на адрес support@heroku.com ,

Чтобы запустить код в cron, добавьте ваш код в файл cron.rake и посмотрите документацию cron здесь .

FYI

Собственные образцы Heroku для cron предлагают проверить время, т.е.

if Time.now.hour % 4 == 0 # run every four hours
  ...

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

работает в определенное время

Попробуйте столбец delayed_job :run_at, который может дать вам гибкость, необходимую для запуска заданий в очень определенное время.

Документация Heroku: http://devcenter.heroku.com/articles/delayed-job

1 голос
/ 21 мая 2011

Вы должны добавить cronjob для этого.Если вы используете Linux, вы можете добавить cron в crontab и указать время, когда он запускается.Это очень гибкий.Вы можете найти подробности здесь:
http://en.wikipedia.org/wiki/Cron

Если вы хотите сделать это рубиновым способом, попробуйте каждый раз, когда gem:
https://github.com/javan/whenever

0 голосов
/ 21 мая 2011

Для конкретного случая, который вы упомянули, я думаю, что вы должны попробовать delayed_job:
https://github.com/collectiveidea/delayed_job#readme

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

0 голосов
/ 21 мая 2011

Goto cron заданий в панели управления хостингом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...