2017-05-18 1 views
3

Ich bin ein Neuling für Python. Ich habe ein einfaches Verschrottungsprogramm mit asyncio geschrieben. Hier sind meine Code-Schnipselpython3 -Get Ergebnisse von async Methode

loop = asyncio.get_event_loop() 
task = loop.create_task(conSpi.parse(arguments.url)) 
value = loop.run_until_complete(asyncio.wait([task])) 
loop.close() 

ich drucken möchten in value.Rather Druck Variable Wert zurückgegeben führen wird, druckt es so etwas wie dieses

{<Task finished coro=<ConcurrentSpider.parse() done, 
defined at /home/afraz/PycharmProjects/the-lab/concurrentspider.py:28> result=3>} 

`

Wie kann ich das bekommen Ergebnis nur und nicht Ruhe gedruckt bekommen?

Antwort

4

Der einfachste Ansatz ist

value = loop.run_until_complete(task) 

zu schreiben, das nur funktioniert, wenn Sie auf eine Aufgabe warten soll. Wenn Sie mehr als eine Aufgabe benötigen, müssen Sie asyncio.wait korrekt verwenden. Es gibt ein Tupel mit abgeschlossenen und ausstehenden Futures zurück. Standardmäßig sind die ausstehenden Futures jedoch leer, da sie darauf warten, dass alle Futures abgeschlossen werden.

So etwas wie

done, pending = loop.run_until_complete(asyncio.wait(tasks)) 
for future in done: 
    value = future.result() #may raise an exception if coroutine failed 
    # do something with value 
+0

Dank gearbeitet, @ Sam :) –

+0

Ich hatte nur 1 Aufgabe –