Dans web3.py 7.14, HTTPProvider utilise Requests tandis qu'AsyncHTTPProvider utilise aiohttp. Leurs request_kwargs atteignent des clients HTTP différents.

Pour un point de terminaison HTTPS JSON-RPC synchrone :

from web3 import Web3

client = Web3(Web3.HTTPProvider(
    rpc_url,
    request_kwargs={
        'proxies': {'https': 'http://proxy.example:8080'},
        'timeout': 20,
    },
))

Gardez rpc_url comme point de terminaison réel du nœud. La valeur de la table nomme l'intermédiaire. Pour un nœud RPC public sur une route de proxy public autorisée, la liste de proxys HTTP fournit des candidats pour les valeurs de proxy HTTP dans l'un ou l'autre exemple.

Le fournisseur asynchrone utilise plutôt proxy au singulier avec une valeur d'URL :

from aiohttp import ClientTimeout
from web3 import AsyncHTTPProvider, AsyncWeb3

provider = AsyncHTTPProvider(
    rpc_url,
    request_kwargs={
        'proxy': 'http://proxy.example:8080',
        'timeout': ClientTimeout(total=20),
    },
)
async_client = AsyncWeb3(provider)

Copier les proxys dans le chemin asynchrone produit une erreur de mot-clé inattendu dans aiohttp. Il faut changer à la fois l'orthographe et le type de valeur.

Fermez le fournisseur asynchrone avec await provider.disconnect() dans son chemin de nettoyage. Ces réglages appartiennent aux fournisseurs HTTP ; un fournisseur WebSocket a sa propre interface de transport.

Articles similaires