Tornado expose une seule interface de client HTTP asynchrone, sous laquelle se trouvent différentes implémentations. Les options de proxy peuvent donc échouer à cause de l'implémentation choisie, même lorsque le point de terminaison du proxy est correct.

La documentation du client HTTP désigne SimpleAsyncHTTPClient comme implémentation par défaut et documente l'alternative basée sur curl. Les options de requête telles que proxy_host ont des notes de prise en charge propres à chaque implémentation. Lisez ces notes avant d'ajouter des options à un appel fetch.

Configurez avant de construire le client

Dans un environnement déjà doté du backend curl, une application peut le sélectionner avant de créer son client partagé :

from tornado.httpclient import AsyncHTTPClient

AsyncHTTPClient.configure('tornado.curl_httpclient.CurlAsyncHTTPClient')
client = AsyncHTTPClient()

Utilisez ensuite les options de requête documentées pour l'hôte, le port, l'authentification et le délai d'attente du proxy pour l'appel prévu. Gardez le nom d'hôte séparé du port numérique. Choisir le backend ne choisit pas à lui seul un point de terminaison de proxy. Pour une route HTTP publique autorisée, la liste de proxys HTTP fournit des candidats d'hôte et de port pour ces options de requête.

La construction du client compte, car une application ou un framework peut créer et conserver un client HTTP avant l'exécution de ce code. Inspectez l'instance réellement utilisée pour la requête en échec au lieu de construire ensuite un autre client et de supposer qu'il explique le premier.

Pour le diagnostic, consignez le backend actif et la version de sa bibliothèque sous-jacente avec l'étape en échec. Distinguez une option de requête non prise en charge d'un délai d'attente réseau et d'une réponse HTTP renvoyée par le proxy. Ces observations mènent à des corrections différentes.

Articles similaires