7
votes

Quelles causes EventMachine :: ConnectionNotbound?

Je suis nouveau à EventMachine, donc je ne suis pas sûr de ce que cela signifie. Je reçois cette exception: xxx

Le programme est assez compliqué, je ne peux donc pas vraiment expliquer tout ce qui aurait pu conduire à ce sujet. Tout ce dont j'ai besoin, c'est un pointeur vers ce qu'il faut rechercher. L'erreur ne semble pas être documentée (en regardant http://eventmachine.rubyforge.org/ ).


0 commentaires

4 Réponses :


8
votes

J'ai eu cette exception soulevée lorsque une autre exception non gourmande a été soulevée dans la méthode d'initialisation d'une sous-classe d'événement Machine :: Connection. Vérifiez que l'arité de votre méthode d'initialisation de la sous-classe est correcte et que la méthode d'initialisation est en cours d'exécution sans erreurs.


0 commentaires

6
votes

Habituellement, ces erreurs se produisent dans l'initialisation ou la post_init. La première chose à faire est d'ajouter le sauvetage à l'intérieur de vos rappels pour déterminer ce qui provoque réellement cette erreur.

def initialize(*args)
  ...
  super
rescue Exception
  ...
end

def post_init
  ...
  super
rescue Exception
  ...
end


1 commentaires

C'est un excellent conseil, et merci pour l'illustration, mais cela ne attrape pas le scénario de Troy, où l'arité du #Imitialize est fausse. Cela s'est avéré être mon problème. (En fait, je faisais l'appel, ne pas être la connexion.) Probablement une bonne réponse à quelqu'un d'autre avec la même question, cependant. :)



1
votes

I Fixe une exception forcée pour ce cas dans EventMachine il y a plus d'un an. C'est dans la pré-élévation 1.0 GEM ( GEM Installez EventMachine --Pre ) ou mieux, utilisez EventMachine à partir du référentiel.


1 commentaires

J'ai vu ce commentaire à plusieurs endroits sur ce sujet. J'utilise EventMachine version 1.2.7 et c'est toujours un problème.



0
votes

J'ai rencontré un problème similaire et tout en enquêtant sur une enquête sur https://github.com/igrigorik/em-http-request/issues/190#issuecomment-16995528

Vous devez essentiellement envelopper em :: httprecest.new avec em.schedule ou em.next_tacquement si vous faites EM :: HTTPRQUEST.NEW Dans votre code, même si c'est sous un em.defer


0 commentaires