2017-02-20 8 views
1

Die documentation der aiohttp Bibliothek heißt es:Warum explizite Loop-Parameter mit aiohttp verwenden?

loop - Ereignisschleife für die Verarbeitung von HTTP-Anfragen verwendet. Wenn param None ist, wird asyncio.get_event_loop() zum Abrufen der Standard-Ereignisschleife verwendet. Wir empfehlen jedoch dringend, explizite Schleifen überall zu verwenden. (Optional)

Es ist möglich, die loop zu ClientSession Objekte zu übergeben, zu versehen „auf Modulebene“ Funktionen usw.

Ich bin neu in der asynchronen Programmierkonzept als Ganzes, könnte man erklären, Ich warum es ist zu empfehlen, die Schleife explizit zu verwenden, anstatt die Objekte/Funktionen nur die Standardeinstellung verwenden?

Eine Anwendung, die mir in den Sinn kommt, ist es, Tests zu vereinfachen, indem ich meine eigenen Loop-Mocks bereitstellen kann, gibt es einen Leistungsgrund?

Antwort

1

Der Grund ist Lesbarkeit und nicht Leistung.

Die explizite Angabe einer Schleife erleichtert es einem Entwickler zu erkennen, woher die Schleifeninstanz stammt, und erleichtert möglicherweise das Ändern der Schleife, wenn eine benutzerdefinierte Schleife in das Programm eingefügt werden muss.

Eine weitere beliebte Option wäre nie geben Sie den Loop-Parameter, und daher wird angenommen, asyncio.get_event_loop() wird immer aufgerufen, um eine Schleife Instanz zu erhalten.

(Es ist möglich, mehr als eine Schleife zu verwenden - zum Beispiel in verschiedenen Threads, aber das ist kein üblicher Anwendungsfall)

Verwandte Themen