Как войти в систему с помощью Ruby и eventmachine? - PullRequest
6 голосов
/ 11 ноября 2010

Я пишу приложение, используя Ruby и библиотеку Eventmachine. Мне очень нравится идея не блокировать ввод-вывод и системы, управляемые событиями, проблема, с которой я сталкиваюсь, - это регистрация. Я использую стандартную библиотеку Ruby. Дело не в том, что регистрация длится вечно, но кажется, что это не должно блокировать, и это делает. Есть ли где-нибудь библиотека, которая расширяет стандартную реализацию логгера Ruby, чтобы она была неблокирующей, или я должен просто вызвать EM :: defer для моих вызовов журналирования? Есть ли способ, которым я могу заставить eventmachine делать это для меня уже?

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

В итоге я поместил регистратор в одноэлементный класс, который запустил поток и имел очередь FIFO.При ведении журнала информация журнала записывается в очередь, а поток просто зацикливается, вытаскивая содержимое из очереди и используя для этого реальный регистратор.На самом деле это не реакторная схема, но она также не сожжет мой пул EM-потоков.

С этим синглтоном у вас может быть только один регистратор, но вот что я сделал на github .

1 голос
/ 14 ноября 2010

Если вы работаете в системе с Syslog, вы можете взглянуть на EM-Syslog

...