2010-08-03 2 views
0

Au cours des 10 dernières heures, j'ai essayé d'y arriver:Surcharge twisted.client.getPage pour définir l'adresse de liaison du socket client!

Traduction de mon blocage httpclient utilisant lib ... la norme dans une version non bloquante/async tordue de celui-ci.

10 heures plus tard ... marquer à travers leurs APIs - il semble que personne n'ait jamais eu besoin de le faire. Beau cadre, mais il semble ... un peu écrasant de simplement définir une socket à une interface différente. Est-ce que les gourous python peuvent faire la lumière et/ou m'envoyer dans la bonne direction? ou tout document que je pourrais avoir manqué? MERCI!

Répondre

0

Eh bien, il ne semble pas que vous ayez manqué quoi que ce soit. client.getPage ne prend pas directement en charge la définition de l'adresse de liaison. Je devine juste ici mais je suspecterais que c'est un de ces cas où il ne s'est jamais produit au développeur original que quelqu'un voudrait spécifier l'adresse de liaison.

Même s'il n'y a pas de support intégré pour ce faire, cela devrait être assez facile à faire. La façon dont vous spécifiez les adresses de liaison pour les connexions sortantes dans twisted est de passer l'adresse de liaison aux fonctions reactor.connectXXX(). Heureusement, le code pour getPage() est vraiment simple. Je suggère trois choses:

  1. Copiez le code pour getPage() et il est fonction d'aide associée dans votre projet
  2. les modifier pour passer à travers l'adresse de liaison
  3. Créer un patch pour corriger cette erreur et l'envoyer aux gens tordus :)
+0

À l'intérieur de _makeGetterFactory() theres reactor.connectTCP(), j'ai ajouté bindAddress et il semble fonctionner. getPage() est une fonction d'aide simple, oui, mais ce qui m'a vraiment troublé, c'est que j'ai pensé que je pouvais juste lui envoyer une contextFactory surchargée ou quelque chose:/Merci pour votre réponse rapide, Rakis. Je suppose que ça vaudrait la peine d'apprendre tout cela et de prendre l'habitude - même si je n'ai pas besoin de toutes les fonctionnalités, mais depuis que je crée une application réseau plutôt performante ... J'espère que c'est aussi flexible et extensible que le dit Twisted. – Dmitry

+0

Des livres ou de la documentation décente couvrant Twisted avancé (autre que l'API fade) que vous recommanderiez personnellement, Rakis? – Dmitry

+0

Il y a un livre O'Reilly sur Twisted qui est plutôt bon, mais il est plus orienté vers un niveau intermédiaire/aperçu que vers un niveau avancé. Les documents existants sont plutôt concis mais assez complet pour la plupart des opérations de cas courantes. J'ai cependant découvert que lorsque je fais quelque chose d'inhabituel, je suis souvent mieux servi en creusant à travers la source Twisted plutôt qu'en cherchant une documentation explicite. Il est écrit par de nombreuses personnes extrêmement talentueuses et en plus de gagner ce que je suis allé chercher, je ne manque jamais d'apprendre un nouveau truc ou deux à ajouter à ma boîte à outils ;-) – Rakis

Questions connexes