Trong web3.py 7.14, HTTPProvider dùng Requests còn AsyncHTTPProvider dùng aiohttp. request_kwargs của chúng đi đến những HTTP client khác nhau.

Đối với một điểm cuối HTTPS JSON-RPC đồng bộ:

from web3 import Web3

client = Web3(Web3.HTTPProvider(
    rpc_url,
    request_kwargs={
        'proxies': {'https': 'http://proxy.example:8080'},
        'timeout': 20,
    },
))

Giữ rpc_url là điểm cuối thực tế của nút. Giá trị trong ánh xạ đặt tên cho bên trung gian. Với một nút RPC công cộng trên tuyến proxy công cộng được phép, danh sách proxy HTTP cung cấp các ứng viên cho giá trị proxy HTTP trong một trong hai ví dụ.

Nhà cung cấp bất đồng bộ thay vào đó dùng proxy số ít với giá trị 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)

Sao chép proxy vào đường bất đồng bộ tạo ra lỗi từ khóa không mong đợi trong aiohttp. Cả cách viết lẫn kiểu giá trị đều phải thay đổi.

Đóng nhà cung cấp bất đồng bộ bằng await provider.disconnect() trong đường dọn dẹp của nó. Những cài đặt này thuộc về các nhà cung cấp HTTP; nhà cung cấp WebSocket có giao diện vận chuyển riêng.

Bài viết liên quan