ב-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 בשתי הדוגמאות.

הספק האסינכרוני משתמש במקום זאת ב-proxy ביחיד עם ערך 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)

העתקת פרוקסי לנתיב האסינכרוני יוצרת שגיאת מילת מפתח בלתי צפויה ב-aiohttp. יש לשנות גם את האיות וגם את סוג הערך.

סגרו את הספק האסינכרוני עם await provider.disconnect() בנתיב הניקוי שלו. הגדרות אלה שייכות לספקי HTTP; לספק WebSocket יש ממשק תעבורה משלו.

מאמרים קשורים