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

ਸੰਬੰਧਿਤ ਲੇਖ