web3.py proxy ayarları: HTTPProvider ile AsyncHTTPProvider karşılaştırması
Aynı request_kwargs değerlerini aralarında kopyalamak yerine HTTPProvider için Requests tarzı proxy'ler, AsyncHTTPProvider için aiohttp tarzı proxy kullanın.
web3.py 7.14 sürümünde HTTPProvider Requests kullanırken AsyncHTTPProvider aiohttp kullanır. request_kwargs değerleri farklı HTTP istemcilerine ulaşır.
Eşzamanlı bir HTTPS JSON-RPC uç noktası için:
from web3 import Web3
client = Web3(Web3.HTTPProvider(
rpc_url,
request_kwargs={
'proxies': {'https': 'http://proxy.example:8080'},
'timeout': 20,
},
))rpc_url'yi düğümün gerçek uç noktası olarak tutun. Eşlemedeki değer aracıyı adlandırır. İzin verilen bir genel proxy rotasındaki genel RPC düğümü için HTTP proxy listesi her iki örnekteki HTTP proxy değerleri için adaylar sunar.
Eşzamansız sağlayıcı bunun yerine URL değeri alan tekil proxy kullanır:
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)Proxy'leri eşzamansız yola kopyalamak aiohttp içinde beklenmeyen anahtar sözcük hatası üretir. Hem yazım hem de değer türü değişmelidir.
Eşzamansız sağlayıcıyı temizleme yolunda await provider.disconnect() ile kapatın. Bu ayarlar HTTP sağlayıcılarına aittir; bir WebSocket sağlayıcısının kendi taşıma arayüzü vardır.