Mga setting ng proxy sa web3.py: HTTPProvider vs. AsyncHTTPProvider
Gumamit ng proxy na istilong Requests para sa HTTPProvider at proxy na istilong aiohttp para sa AsyncHTTPProvider sa halip na kopyahin ang parehong request_kwargs sa pagitan nila.
Sa web3.py 7.14, gumagamit ang HTTPProvider ng Requests samantalang ang AsyncHTTPProvider ay gumagamit ng aiohttp. Ang kanilang request_kwargs ay umaabot sa magkaibang HTTP client.
Para sa isang synchronous na HTTPS JSON-RPC endpoint:
from web3 import Web3
client = Web3(Web3.HTTPProvider(
rpc_url,
request_kwargs={
'proxies': {'https': 'http://proxy.example:8080'},
'timeout': 20,
},
))Panatilihin ang rpc_url bilang aktwal na endpoint ng node. Pinapangalanan ng value sa mapa ang tagapamagitan. Para sa pampublikong RPC node sa isang pinapayagang pampublikong ruta ng proxy, ang listahan ng HTTP proxy ay nagbibigay ng mga kandidato para sa mga value ng HTTP proxy sa alinman sa mga halimbawa.
Ang asynchronous na provider ay gumagamit sa halip ng isahan na proxy na may value na URL:
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)Ang pagkopya ng mga proxy sa asynchronous na landas ay nagdudulot ng hindi inaasahang-keyword na error sa aiohttp. Kailangang baguhin ang baybay at ang uri ng value.
Isara ang asynchronous na provider gamit ang await provider.disconnect() sa landas ng paglilinis nito. Ang mga setting na ito ay pag-aari ng mga HTTP provider; ang isang WebSocket provider ay may sariling interface ng transport.