הגדרות פרוקסי ב-web3.py: HTTPProvider לעומת AsyncHTTPProvider
השתמשו בפרוקסי בסגנון Requests עבור HTTPProvider ובפרוקסי בסגנון aiohttp עבור AsyncHTTPProvider במקום להעתיק את אותם request_kwargs ביניהם.
ב-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 יש ממשק תעבורה משלו.