Dalam web3.py 7.14, HTTPProvider menggunakan Requests manakala AsyncHTTPProvider menggunakan aiohttp. request_kwargs mereka sampai kepada klien HTTP yang berbeza.

Untuk titik akhir HTTPS JSON-RPC segerak:

from web3 import Web3

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

Kekalkan rpc_url sebagai titik akhir nod sebenar. Nilai dalam peta menamakan perantara. Untuk nod RPC awam pada laluan proksi awam yang dibenarkan, senarai proksi HTTP membekalkan calon untuk nilai proksi HTTP dalam mana-mana contoh.

Penyedia tak segerak sebaliknya menggunakan proxy tunggal dengan nilai 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)

Menyalin proksi ke laluan tak segerak menghasilkan ralat kata kunci tidak dijangka dalam aiohttp. Kedua-dua ejaan dan jenis nilai perlu diubah.

Tutup penyedia tak segerak dengan await provider.disconnect() dalam laluan pembersihannya. Tetapan ini milik penyedia HTTP; penyedia WebSocket mempunyai antara muka pengangkutan sendiri.

Artikel berkaitan