Моя проблема не кажется уникальной. По сути, у меня довольно дорогой процесс, который должен запускаться регулярно, но только если пользователь запускает определенное состояние.
Например, у меня есть система «анкет», и я анализирую результаты и даю рекомендации по результатам анализа. Анализ и выработка рекомендаций - дорогостоящий процесс, иногда 10-20 с, который может увеличиваться по мере увеличения набора данных. Кстати, я сейчас ищу способы улучшить производительность этого алгоритма.
Мои мысли по этому поводу состоят в том, чтобы реализовать состояние для этого пользователя, которое говорит, что анализ / рекомендации истекли, опросить это состояние и, если оно истекло, запустить дорогостоящий процесс. Я бы тогда установил, что это состояние истекло, когда пользователь заполняет анкету.
Моя текущая система - это rails 3.0, ruby 1.9.2 и MySQL, работающие на серверах EC2. В настоящее время я использую DelayedJob, чтобы перенести этот процесс в фоновое задание, но я не реализовал состояние / триггер.
Итак, в общем, мой вопрос: 1) Это даже правильная архитектура с учетом сценария? и 2) Могу ли я использовать какой-нибудь гем или реализацию, которая работает с Rails?