web3.py tarpinio serverio nustatymai: HTTPProvider prieš AsyncHTTPProvider
Naudokite Requests stiliaus tarpinius serverius HTTPProvider ir aiohttp stiliaus tarpinį serverį AsyncHTTPProvider, o ne kopijuokite tuos pačius request_kwargs tarp jų.
web3.py 7.14 versijoje HTTPProvider naudoja Requests, o AsyncHTTPProvider – aiohttp. Jų request_kwargs pasiekia skirtingus HTTP klientus.
Sinchroniniam HTTPS JSON-RPC galiniam taškui:
from web3 import Web3
client = Web3(Web3.HTTPProvider(
rpc_url,
request_kwargs={
'proxies': {'https': 'http://proxy.example:8080'},
'timeout': 20,
},
))Palikite rpc_url kaip tikrąjį mazgo galinį tašką. Žemėlapio reikšmė įvardija tarpininką. Viešam RPC mazgui leistiname viešo tarpinio serverio maršrute HTTP tarpinių serverių sąrašas siūlo kandidatus HTTP tarpinio serverio reikšmėms abiejuose pavyzdžiuose.
Asinchroninis teikėjas vietoj to naudoja vienaskaitos proxy su URL reikšme:
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)Tarpinių serverių kopijavimas į asinchroninį kelią sukelia netikėto raktinio žodžio klaidą aiohttp. Reikia pakeisti ir rašybą, ir reikšmės tipą.
Uždarykite asinchroninį teikėją su await provider.disconnect() jo valymo kelyje. Šie nustatymai priklauso HTTP teikėjams; WebSocket teikėjas turi savo transporto sąsają.