A web3.py 7.14, HTTPProvider fa servir Requests mentre que AsyncHTTPProvider fa servir aiohttp. Els seus request_kwargs arriben a clients HTTP diferents.

Per a un punt final HTTPS JSON-RPC síncron:

from web3 import Web3

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

Manteniu rpc_url com el punt final real del node. El valor del mapa anomena l'intermediari. Per a un node RPC públic en una ruta de proxy públic permesa, la llista de proxys HTTP ofereix candidats per als valors de proxy HTTP en qualsevol dels dos exemples.

El proveïdor asíncron, en canvi, fa servir proxy en singular amb un valor 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)

Copiar els proxys a la ruta asíncrona produeix un error de paraula clau inesperada a aiohttp. Cal canviar tant l'ortografia com el tipus del valor.

Tanceu el proveïdor asíncron amb await provider.disconnect() a la seva ruta de neteja. Aquestes opcions pertanyen als proveïdors HTTP; un proveïdor WebSocket té la seva pròpia interfície de transport.

Articles relacionats