إعدادات الوكيل في 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 فله واجهة نقل خاصة به.