2010-03-30 3 views
1

Я использую Observer на своих классах. Когда одна из записей создается/обновляется, мне нужно опознать другую службу (через URL-вызов). Каков наилучший способ сделать это, чтобы не замедлить мой класс? Будет ли использовать драгоценный камень, любимый delayed_job будет излишним?Rails - асинхронные задачи, разветвленные процессы, лучшие практики

В after_update моего Наблюдателя()/after_create() Я просто хочу, чтобы запустить поток, который вызывает URL ...

ответ

2

Если уведомитель является блокирование не-нить, вы могли бы просто икру нить и выполнить уведомление там. Таким образом, ваша программа будет продолжать работать, пока этот поток ожидает ответа.

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

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

2

Определенно используйте поддерживаемый сообществом/принятый драгоценный камень, например delayed_job или resque. Это действительно не так сложно, как вы думаете, и ваше приложение будет лучше масштабироваться по линии.

Смежные вопросы