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 പ്രൊവൈഡർക്ക് സ്വന്തം ട്രാൻസ്പോർട്ട് ഇന്റർഫേസുണ്ട്.