web3.py 프록시 설정: HTTPProvider와 AsyncHTTPProvider
동일한 request_kwargs를 양쪽에 복사하지 말고, HTTPProvider에는 Requests 방식 프록시를, AsyncHTTPProvider에는 aiohttp 방식 프록시를 사용하십시오.
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 프로바이더에는 자체 전송 인터페이스가 있습니다.