Ich habe ein Programm, das Informationen von anderen Seiten holt und sie mit BeautifulSoup und Twisted's getPage analysiert. Später im Programm drucke ich Informationen, die der verzögerte Prozess erstellt. Momentan versucht mein Programm, es zu drucken, bevor das andere die Informationen zurückgibt. Wie kann ich es warten lassen?
%Vor% Wie es scheint, versuchen Sie, mehrere Reaktoren zu bauen / zu betreiben. Alles wird an den selben Reaktor angeschlossen. Hier erfahren Sie, wie Sie mit DeferredList
warten können, bis alle Ihre Rückrufe abgeschlossen sind.
Beachten Sie auch, dass twisAmaz
einen Wert zurückgibt. Dieser Wert wird über callbacks
DeferredList
übergeben und als value
ausgegeben. Da ein DeferredList
die Reihenfolge der Dinge behält, die darin eingefügt werden, können Sie den Index der Ergebnisse mit dem Index Ihrer ISBNs querverweisen.
Eine andere coole Methode ist das mit @ defer.inlineCallbacks. Sie können asynchronen Code wie eine reguläre sequenzielle Funktion schreiben: Ссылка
Erstens sollten Sie in Ihrer verzögerten Methode kein reactor.stop () einfügen, da es alles zerstört.
In Twisted ist "Warten" jetzt nicht erlaubt. Um die Ergebnisse Ihres Rückrufs zu drucken, fügen Sie einfach einen weiteren Rückruf nach dem ersten hinzu.