web3.py ప్రాక్సీ సెట్టింగ్లు: HTTPProvider vs. AsyncHTTPProvider
HTTPProvider కోసం Requests-శైలి ప్రాక్సీలను, AsyncHTTPProvider కోసం aiohttp-శైలి ప్రాక్సీని ఉపయోగించండి, వాటి మధ్య అదే request_kwargs కాపీ చేయడం బదులు.
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 ప్రాక్సీ విలువలకు అభ్యర్థులను అందిస్తుంది.
అసింక్రోనస్ ప్రొవైడర్ బదులుగా URL విలువతో ఏకవచన proxyను ఉపయోగిస్తుంది:
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 ప్రొవైడర్కు దాని స్వంత రవాణా ఇంటర్ఫేస్ ఉంది.