I web3.py 7.14 använder HTTPProvider Requests medan AsyncHTTPProvider använder aiohttp. Deras request_kwargs når olika HTTP-klienter.

För en synkron HTTPS JSON-RPC-slutpunkt:

from web3 import Web3

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

Behåll rpc_url som nodens faktiska slutpunkt. Värdet i kartan anger mellanhanden. För en offentlig RPC-nod på en tillåten offentlig proxyväg tillhandahåller HTTP-proxylistan kandidater för HTTP-proxyvärdena i båda exemplen.

Den asynkrona leverantören använder i stället singular proxy med ett URL-värde:

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)

Att kopiera proxyservrar till den asynkrona vägen ger ett oväntat nyckelordsfel i aiohttp. Både stavningen och värdetypen måste ändras.

Stäng den asynkrona leverantören med await provider.disconnect() i dess städväg. Dessa inställningar tillhör HTTP-leverantörerna; en WebSocket-leverantör har sitt eget transportgränssnitt.

Relaterade artiklar