Donc, j'ai le code suivant:Ruby TCPSocket recv blocage et ne jamais revenir
def LSCPHandler.send_message(message, hostname, port)
s = TCPSocket.open(hostname, port)
s.print message
ret = s.recv(1024)
s.close
LSCPHandler.parse_error(ret)
return ret
fin
Ce qui fonctionne très bien, normalement. Le serveur auquel je parle retourne la réponse assez rapidement, généralement, et tout va bien.
Alors, aujourd'hui, quelque chose s'est mal passé avec le serveur. Pas mon problème, MAIS, cela a entraîné la suspension de toute mon application, en attente de délai de récupération. Ce n'est pas exactement optimal.
Existe-t-il un moyen de temporiser recv si je n'entends pas quelque chose de retour immédiatement? J'ai essayé de regarder la documentation de ruby, mais cela me désoriente vraiment (ie TCPSocket implémente seulement trois méthodes, aucune d'elles ouverte ou recv, et sa classe parente de Socket n'implémente pas non plus ces méthodes. ? Je suis complètement confus)