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 프로바이더에는 자체 전송 인터페이스가 있습니다.

관련 글