В 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 има собствен транспортен интерфейс.

Подобни статии