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

Прядильные фоновые задачи в рельсах

Каков предпочтительный способ создания фоновой задачи для приложения Rails? Я слышал о Starling/Workling и хорошем ol 'script/runner, но мне любопытно, что становится дефактовым способом справиться с этой необходимостью?

Спасибо!

Уточнение: Мне нравится идея Rake in Background, но проблема в том, что мне нужно что-то, что работает постоянно или каждые 10 часов. У меня не будет роскоши сидеть на веб-запросе, он должен быть запущен сервером, асинхронным для действий, происходящих на моем сайте.

4b9b3361

Ответ 2

Это зависит от ваших потребностей.

Попробуйте delayed_job, который поддерживается Tobi, основателем Shopify и разветвляется DHH.

Ответ 3

Я обычно полагаюсь на cronjob scheduling, поскольку он дает гибкость, не записывая отдельный код, чтобы запланировать его. Все, что может быть выполнено из оболочки, может быть запланировано! Будь то любой script (задача ruby ​​/rake/py/bash/любой другой вам нравится), планирование cronjob может быть легко достигнуто.

Если вы работаете в Windows, можно использовать запланированные задачи

Надеюсь, что это поможет.

Ответ 4

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

Я нажимаю на него множество заданий, и это в значительной степени не волнует.

Ответ 5

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

Просто добавьте задание cron, которое выполняет

"cd/path/to/rails/app; RAILS_ENV = запуск rake: my: task"

Зачем изобретать колесо, когда Unix как операционные системы выполняли задачи по графику на протяжении десятилетий?

Ответ 6

Я использовал плагин демонов в прошлом.

Ответ 7

Пока я не знаю, стал ли он стандартом, я имел большой успех с BackgroundRB. У меня несколько рабочих, некоторые из них - длинные задачи, инициируемые действием пользователя, а другие - по расписанию.

Ответ 8

Посмотрите Taskr. Это в основном как cron, но с веб-интерфейсом RESTful. Вы можете использовать его для планирования задач, чтобы периодически подключаться к вашему Rails-приложению и запускать произвольный код (через плагин Taskr4rails). Он должен хорошо вписываться в систему, созданную вокруг служб RESTful, плюс она может уведомить вас, если задача возвращает ошибку, не запускается и т.д.