Quelles sont les causes eventmachine :: ConnectionNotBound?
-
13-09-2019 - |
Question
Je suis nouveau à eventmachine, donc je ne suis pas sûr de ce que cela signifie. Je reçois cette exception:
EventMachine::ConnectionNotBound recieved ConnectionUnbound for an unknown signature: ef93a97d4d6441cb80d30fe2313d7de73
Le programme est assez compliqué, donc je ne peux pas vraiment expliquer tout ce qui aurait pu conduire à la hauteur. Tout ce que je besoin est un pointeur vers ce qu'il faut rechercher. L'erreur ne semble pas être documenté (regarder http://eventmachine.rubyforge.org/ ).
La solution
J'ai eu cette exception soulevée lors d'une autre exception non gérée a été soulevée dans la méthode initialize d'une sous-classe de eventmachine :: Connexion. Assurez-vous que l'arité de votre méthode initialize de la sous-classe est correcte et que la méthode d'initialisation fonctionne sans erreur.
Autres conseils
En règle générale, ces erreurs se produisent dans initialize ou post_init. La première chose que vous devez faire est d'ajouter le sauvetage dans vos callbacks pour savoir ce qui est en fait à l'origine de cette erreur.
def initialize(*args)
...
super
rescue Exception
...
end
def post_init
...
super
rescue Exception
...
end
Je fixe Exception bouillonnante pour ce cas en eventmachine il y a plus d'un an. Il est dans la gemme 1.0 préversion (de gem install eventmachine --pre
) ou mieux, l'utilisation eventmachine du référentiel.
Je suis tombé sur un problème similaire et en enquêtant sur href="https://github.com/igrigorik/em-http-request/issues/190#issuecomment-16995528" suis tombé sur https://github.com/igrigorik/em-http-request/issues/190#issuecomment-16995528
Vous devez essentiellement envelopper EM::HttpRequest.new
avec EM.schedule
ou EM.next_tick
si vous faites EM::HttpRequest.new
dans votre code, même si son sous EM.defer