Во web3.py 7.14 HTTPProvider користи Requests, додека AsyncHTTPProvider користи aiohttp. Нивните request_kwargs стигнуваат до различни HTTP клиенти.

За синхрона HTTPS JSON-RPC крајна точка:

from web3 import Web3

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

Задржете го rpc_url како вистинска крајна точка на јазолот. Вредноста во мапата го именува посредникот. За јавен RPC јазол на дозволена јавна прокси рута, списокот со HTTP прокси нуди кандидати за вредностите на HTTP прокси во двата примери.

Асинхрониот давател наместо тоа користи еднина proxy со 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)

Копирање на прокси во асинхроната патека предизвикува грешка за неочекуван клучен збор во aiohttp. Треба да се сменат и правописот и типот на вредноста.

Затворете го асинхрониот давател со await provider.disconnect() во неговата патека за чистење. Овие поставки им припаѓаат на HTTP давателите; давателот WebSocket има свое транспортно интерфејс.

Поврзани статии