Estoy escribiendo una aplicación usando Ruby y la biblioteca Eventmachine. Realmente me gusta la idea de E/S sin bloqueo y sistemas impulsados por eventos, el problema que me estoy encontrando es el inicio de sesión. Estoy usando la biblioteca de registro estándar de Ruby. No es que el registro dure para siempre, pero parece algo que no debería bloquearse y lo hace. ¿Existe alguna biblioteca en alguna parte que extienda la implementación del registrador estándar de Ruby para que no sea bloqueante o debería simplemente llamar a EM :: defer para mis llamadas de registro? ¿Hay alguna manera de que pueda hacer que eventmachine haga esto por mí ya?¿Cómo iniciar sesión con Ruby y eventmachine?
Respuesta
acabé envolviendo el registrador en una clase singleton que se inició un hilo y tenía una cola FIFO. El registro arrojaría la información de registro a la cola y el hilo simplemente se enganchó, sacando cosas de la cola y usando el registrador real para iniciar sesión. No es realmente el patrón del reactor, pero tampoco masticará mi grupo de subprocesos EM.
Con este singleton, solo puede tener un registrador, pero esto es lo que hice en github.
¿podría compartir algún código? –
Enlace a lo que puse en github. ¡Conseguiste que fuera de código abierto! =) – Justin
¿Hay una gema de registro que no engendra hilos, y en su lugar utiliza el procesamiento asincrónico nativo con devoluciones de llamadas? –
Si estás en un sistema con Syslog se puede echar un vistazo a EM-Syslog
- 1. socket.io y eventmachine en ruby
- 2. Cómo escribir archivos (grandes) con Ruby Eventmachine
- 3. Comunicación entre Rails y Ruby EventMachine Process
- 4. Iniciar sesión con Linkedin
- 5. mongoid y mongomapper con eventmachine
- 6. Cómo iniciar sesión con Curl y SSL y cookies
- 7. Cómo iniciar sesión con cURL con POST y Cookie
- 8. No se puede iniciar sesión en Amazon con Ruby Mechanize
- 9. no se puede iniciar el proceso sinatra - eventmachine "no acceptor"
- 10. ¿Para iniciar sesión o no iniciar sesión?
- 11. EventMachine y Ruby Threads: ¿qué está pasando realmente aquí?
- 12. Django iniciar sesión/cerrar sesión
- 13. IRb: cómo iniciar una sesión interactiva de ruby con las clases precargadas
- 14. ¿Cómo obtengo una solicitud HTTPS con SSL client cert para trabajar con Ruby EventMachine?
- 15. ¿Iniciar sesión en Sinatra?
- 16. FOSUserBundle iniciar sesión con correo electrónico (Symfony2)
- 17. XNA - Iniciar sesión con perfil local
- 18. ¿Es posible iniciar sesión con Storyboarding?
- 19. C# - Cerrar sesión y iniciar sesión programáticamente en un usuario
- 20. Redirigir después de iniciar sesión con Devise
- 21. Iniciar y detener subprocesos de ruby
- 22. Configuración "Iniciar sesión como un servicio" y "Permitir el inicio de sesión localmente" con ADSI
- 23. Cómo iniciar sesión en Gerrit como administrador
- 24. htaccess rule para reenviar/iniciar sesión/y/iniciar sesión en la misma página?
- 25. ¿Cómo implemento 'iniciar sesión con google' en mi sitio?
- 26. ¿Cómo iniciar sesión en archivos separados por hilo con Log4Net?
- 27. ¿Cómo puedo iniciar sesión y encontrar las consultas más caras?
- 28. ¿Cómo se integra EventMachine & Rails?
- 29. Uso de Ruby con Mechanize para iniciar sesión en un sitio web
- 30. Cómo iniciar sesión marcos de pila con Windows x64
¿Has intentado delegar el registro en un nuevo hilo? – AndrewKS
Eso es lo que EM :: defer me permitiría hacer, pero estoy buscando una forma de evitarlo. – Justin