У меня есть необходимость отправлять оповещения в веб-систему мониторинга, написанную на RoR. Решение проблемы грубой силы состоит в том, чтобы часто опрашивать облегченный контроллер с помощью JavaScript. Естественно, недостатком является то, что для того, чтобы получить быстрое время отклика на оповещения, мне пришлось бы очень часто опрашивать (каждые 5 секунд).
Одна из моих идей заключалась в том, что поток опроса, созданный AJAX, спал на стороне сервера до тех пор, пока на сервер не поступило предупреждение. Затем сервер разбудит спящий поток и вернет ответ веб-клиенту, который будет показан немедленно. Это позволило бы мне сократить интервал опроса до одного раза в 30 секунд или каждую минуту, одновременно уменьшая время, необходимое для оповещения пользователя.
Одна вещь, на которую я не рассчитывал, это то, что mongrel / rails не запускает поток для веб-запроса, как я ожидал. Это означает, что другие входящие веб-запросы блокируются до истечения времени ожидания первого потока.
Я пытался возиться с вызовом "config.threadsafe!" в моей конфигурации, но это, похоже, не меняет поведение на поток для модели запроса. Плюс, похоже, что работает с config.threadsafe! это рискованное предложение, которое может потребовать гораздо большего тестирования и переделки моего существующего приложения.
Есть какие-нибудь мысли о подходе, который я выбрал, или о том, как лучше найти время ответа, которое я ищу, без необходимости наводить сервер запросами?