In Python ist Trio, eine Bibliothek für die asynchrone Verarbeitung, einfach zu verwenden. Da sie jedoch nur über eine Low-Layer-API verfügt, kann die Verwendung für sich genommen recht schwierig sein. Glücklicherweise gibt es in der http-Client-Bibliothek einen Trio-Modus namens httpx, also habe ich versucht, diesen zu verwenden.
https://github.com/encode/httpx
Eine asynchrone http-Clientbibliothek mit einer ähnlichen Benutzerfreundlichkeit wie Anfragen. Ein Modus für Trio ist ebenfalls verfügbar. Die zu diesem Zeitpunkt in diesem Artikel verwendete Version war 0.7.8.
https://github.com/python-trio/trio
Eine benutzerfreundliche asynchrone Verarbeitungsbibliothek. Die damalige Version war 0.13.0.
Der Code sieht so aus. Weitere Informationen finden Sie in der offiziellen httpx-Dokumentation.
Grundsätzlich sieht der Code so aus.
import httpx
from httpx.concurrency.trio import TrioBackend
import trio
async def main():
#Bitte ändern Sie den Wert der Zeitüberschreitung in "gut"
async with httpx.AsyncClient(backend=TrioBackend(), timeout=None) as client:
response = await client.get('https://www.example.com/')
print(response)
trio.run(main)
Wenn Sie parallel eine Anfrage für den Inhalt der Liste senden, würde der Code meiner Meinung nach folgendermaßen aussehen: Es gibt keine API, die eine Liste wie "asyncio.gather" zurückgibt. Sie müssen sie daher mit einem Abschluss erstellen. Weitere Informationen finden Sie unter Stapelüberlauf.
async def main():
#Ich möchte Anfragen in paralleler URL senden
urls = ['https://www.example.com/', 'https://www.example2.com/']
results = []
async def _inner(client, url):
response = await client.get(url)
results.append(response)
async with httpx.AsyncClient(backend=TrioBackend(), timeout=None) as client:
async with trio.open_nursery() as nursery:
for url in urls:
nursery.start_soon(_inner, client, url)
print(results)
Wenn Sie über Trio auf Japanisch lesen möchten, klicken Sie bitte hier. Ich glaube nicht, dass es in diesem Artikel vermittelt wurde, aber Trio ist eine praktische Bibliothek, die die Zusammenarbeit mit pytest berücksichtigt. Bitte verwenden Sie sie.
Recommended Posts