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 ਪ੍ਰੋਵਾਈਡਰ ਦਾ ਆਪਣਾ ਟ੍ਰਾਂਸਪੋਰਟ ਇੰਟਰਫ਼ੇਸ ਹੈ।