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 ପ୍ରୋଭାଇଡରର ନିଜସ୍ୱ ପରିବହନ ଇଣ୍ଟରଫେସ ଅଛି।