J'écris une application en utilisant Ruby et la bibliothèque Eventmachine. J'aime vraiment l'idée de systèmes d'E/S non bloquants et d'événements, le problème que je rencontre est la journalisation. J'utilise la bibliothèque de journalisation standard de Ruby. Ce n'est pas que la journalisation prend une éternité, mais il semble que quelque chose ne devrait pas bloquer et c'est le cas. Existe-t-il une bibliothèque quelque part qui étende l'implémentation de l'enregistreur standard de Ruby pour qu'elle ne soit pas bloquante ou devrais-je simplement appeler EM :: defer pour mes appels de journalisation? Y a-t-il un moyen pour que eventmachine fasse ça pour moi déjà?Comment se connecter avec Ruby et eventmachine?
Répondre
J'ai fini par envelopper l'enregistreur dans une classe singleton qui a commencé un fil et avait une file d'attente FIFO. La consignation transfère les informations du journal dans la file d'attente et le thread se contente d'effectuer une boucle pour extraire les données de la file d'attente et utiliser le consignateur réel pour les consigner. Pas vraiment le modèle de réacteur mais il ne mâche pas non plus ma piscine de fil EM.
Avec ce singleton, vous ne pouvez avoir qu'un seul enregistreur mais voici ce que j'ai fait sur github.
pourriez-vous partager du code? –
Lien vers ce que j'ai mis en place sur github. Tu m'as amené à aller open source! =) – Justin
Existe-t-il une gem de consignation qui ne génère pas de threads et utilise à la place un traitement asynchrone natif avec des rappels? –
Si vous êtes sur un système avec Syslog vous pouvez jeter un oeil à EM-Syslog
- 1. Eventmachine :: defer + ruby
- 2. Ruby on Rails + EventMachine?
- 3. Se connecter manuellement à PostgreSQL avec Ruby
- 4. Ruby on Rails - Se connecter
- 5. Ruby error eventmachine: 'non breaker boucle'
- 6. Comment faire une clé étrangère se connecter avec sqlite3 et Ruby on Rails
- 7. Accéder aux ressources se connecter protégé avec Rails et Flex
- 8. EventMachine: Comment construire un système de discussion avec l'application Rails
- 9. comment se connecter microsoft crm avec Delphi?
- 10. Comment se connecter efficacement avec des configurations?
- 11. comment se connecter au serveur en utilisant
- 12. comment se connecter sql et asp.net
- 13. Comment se connecter avec udp dans android?
- 14. Se connecter ou ne pas se connecter?
- 15. Comment se connecter à Oracle en utilisant JRuby et JDBC
- 16. Comment EventMachine & Rails s'intègrent-ils?
- 17. Comment se connecter nsxmlparser
- 18. Comment se connecter HibernateCriteriaBuilder
- 19. Comment obtenir une requête HTTPS avec le certificat client SSL pour utiliser Ruby EventMachine?
- 20. Comment se connecter subsonic3 sql
- 21. comment se connecter dans WebSVN
- 22. Comment se connecter/se déconnecter d'un serveur?
- 23. Ruby Sinatra - se connecter à mongoDB sur mongoHQ échoué
- 24. Comment se connecter à SQLServer 2k5 en utilisant Ruby 1.8.7 sur W2k3 avec enregistrement actif 2.3.5
- 25. Comment se connecter dans ASP.NET
- 26. Comment se connecter sur le site avec JavaScript dans Ruby on Rails?
- 27. se connecter à mysql avec C# .net
- 28. Une question eventmachine
- 29. Comment se connecter à facebook
- 30. Comment me connecter à Yahoo avec oauth en utilisant Ruby?
Avez-vous essayé de déléguer la journalisation à un nouveau sujet? – AndrewKS
C'est ce que EM :: defer me permettrait de faire, mais je cherche un moyen de l'éviter. – Justin