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 প্রোভাইডারের নিজস্ব ট্রান্সপোর্ট ইন্টারফেস আছে।