Python 3.5 async/await-mit echten code-Beispiel

Gelesen habe ich Tonnen von Artikeln und Tutorials über Python 3.5 async/await Sache. Ich muss sagen, ich bin ziemlich verwirrt, weil einige verwenden get_event_loop() und run_until_complete(), einige verwenden ensure_future(), einige verwenden asyncio.wait(), und einige nutzen call_soon().

Es scheint, wie ich haben eine Menge zur Auswahl, aber ich habe keine Ahnung, ob Sie völlig identisch sind, oder gibt es Fälle, wo die Verwendung von Schleifen und es gibt Fälle, wo Sie verwenden Sie wait () auf.

Aber die Sache ist, alle Beispiele arbeiten mit asyncio.sleep() als simulation des realen langsame operation, gibt einen erwartbaren Objekt. Sobald ich versuche zu tauschen dieser Linie für einige echte code die ganze Sache nicht. Was zum Teufel sind die Unterschiede zwischen den Ansätzen oben geschrieben und wie sollte ich laufen, eine third-party-Bibliothek, die nicht bereit sind, für async/await. Ich verwende die Quandl service zu Holen, Bestand.

 import asyncio
 import quandl

 async def slow_operation(n):
     # await asyncio.sleep(1) # Works because it's await ready.
     await quandl.Dataset(n) # Doesn't work because it's not await ready.


 async def main():
     await asyncio.wait([
         slow_operation("SIX/US9884981013EUR4"),
         slow_operation("SIX/US88160R1014EUR4"),
     ])

 # You don't have to use any code for 50 requests/day.
 quandl.ApiConfig.api_key = "MY_SECRET_CODE"

 loop = asyncio.get_event_loop()
 loop.run_until_complete(main())

Ich hoffe, Sie bekommen den Punkt, wie verloren ich mich fühle und wie einfach die Sache, die ich haben möchte, parallel laufen.

InformationsquelleAutor n1_ | 2016-10-10
Schreibe einen Kommentar