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 પ્રોવાઇડરનું પોતાનું પરિવહન ઇન્ટરફેસ છે.