In web3.py 7.14, HTTPProvider usa Requests mentre AsyncHTTPProvider usa aiohttp. I loro request_kwargs raggiungono client HTTP diversi.

Per un endpoint HTTPS JSON-RPC sincrono:

from web3 import Web3

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

Mantenete rpc_url come endpoint effettivo del nodo. Il valore nella mappa indica l'intermediario. Per un nodo RPC pubblico su una rotta proxy pubblica consentita, la lista di proxy HTTP fornisce candidati per i valori proxy HTTP in entrambi gli esempi.

Il provider asincrono usa invece proxy al singolare con un valore 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)

Copiare i proxy nel percorso asincrono produce un errore di parola chiave inattesa in aiohttp. Devono cambiare sia l'ortografia sia il tipo di valore.

Chiudete il provider asincrono con await provider.disconnect() nel suo percorso di pulizia. Queste impostazioni appartengono ai provider HTTP; un provider WebSocket ha la propria interfaccia di trasporto.

Articoli correlati