Ρυθμίσεις διαμεσολαβητή στο 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 έχει τη δική του διεπαφή μεταφοράς.