Какой подход вы бы порекомендовали для реализации веб-планировщиков - PullRequest
2 голосов
/ 15 июля 2009

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

До сих пор мой подход заключался в настройке заданий cron, которые по сути выполняют пакетную обработку команд в очереди. Например, у меня есть cron, вызывающий скрипт (я работаю в RubyOnRails, так что это скрипт бегуна) каждые 5 минут, который проверяет, есть ли какие-либо элементы, которые необходимо обработать, затем передает задачи соответствующим обработчикам.

Это работает, но по некоторым причинам не кажется лучшим подходом. Можете ли вы что-нибудь порекомендовать, или есть какие-либо комментарии по этому поводу?

Я работал в Ruby on Rails, но нет никаких причин, по которым это обсуждение должно быть ограничено только RoR.

Спасибо

Ответы [ 3 ]

3 голосов
/ 15 июля 2009

Несколько способов сделать это. Для одного проекта, который мы недавно разработали, мы использовали delayed_job , отличный инструмент для асинхронной обработки для Rails. Мы можем настроить запуск задания каждые 5 минут, и после этого задание создаст другое задание после его завершения и т. Д.

Другие инструменты, такие как BackgroundRB, по умолчанию поддерживают работника в стиле cron.

Я часто нахожу, что выполнение раз в минуту грабли для добавления новых заданий в delayed_job работает очень хорошо; Вы можете попробовать это. Он наиболее устойчив и позволяет вам хранить всю логику таймера в Ruby, при этом не требуя уродливых хаков или потенциально разрушаемых настроек, как мой первоначальный пример delayed_job (например, вам нужно очистить рабочую очередь; теперь вам нужно снова сбросить все свои работы, чтобы получить их работает правильно).

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

1 голос
/ 16 июля 2009

Еще одно предложение - создать свой собственный демон. Это даст вам возможность делать практически все, что вам нужно.

Это было покрыто превосходным скринкастом Railscast - http://railscasts.com/episodes/129-custom-daemon

0 голосов
/ 15 июля 2009

Не могу понять, почему вы не используете cron и script / runner. Преимущество состоит в том, что ваша среда Rails (дополнительно необходимая) не всегда загружается, загружается только тогда, когда вам нужно запустить задание.

Недостатком является то, что это зависит от присутствия cron ...?

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