web3.py प्रॉक्सी सेटिंग्स: HTTPProvider बनाम 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 प्रोवाइडर का अपना ट्रांसपोर्ट इंटरफ़ेस है।