Ich öffne eine Datei, die 100.000 URLs enthält. Ich muss eine HTTP-Anfrage an jede URL senden und den Statuscode ausgeben. Ich verwende Python 2.6 und habe mir bisher die vielen verwirrenden Möglichkeiten angeschaut, wie Python Threading/Concurrency implementiert. Ich habe mir sogar die Python Übereinstimmung Bibliothek, kann aber nicht herausfinden, wie man dieses Programm richtig schreibt. Ist jemand auf ein ähnliches Problem gestoßen? Ich schätze, ich muss generell wissen, wie man Tausende von Aufgaben in Python so schnell wie möglich ausführt - ich nehme an, das bedeutet "gleichzeitig".
Antworten
Zu viele Anzeigen?Erwägen Sie die Verwendung von Windmühle obwohl Windmill wahrscheinlich nicht so viele Themen bearbeiten kann.
Sie könnten dies mit einem handgeschriebenen Python-Skript auf 5 Rechnern tun, wobei jeder Rechner eine ausgehende Verbindung über die Ports 40000-60000 herstellt und 100.000 Port-Verbindungen öffnet.
Außerdem könnte es hilfreich sein, einen Beispieltest mit einer QA-Anwendung mit schönem Thread durchzuführen, wie z. B. OpenSTA um eine Vorstellung davon zu bekommen, wie viel jeder Server bewältigen kann.
Versuchen Sie auch, einfaches Perl mit der Klasse LWP::ConnCache zu verwenden. Auf diese Weise erhalten Sie wahrscheinlich mehr Leistung (mehr Verbindungen).
[Werkzeug]
Apache-Bank ist alles, was Sie brauchen. - Ein Befehlszeilen-Computerprogramm ( CLI ) zur Messung der Leistung von HTTP-Webservern
Ein schöner Blogbeitrag für Sie: https://www.petefreitag.com/item/689.cfm (aus Pete Freitag )
Am einfachsten wäre es, die in Python eingebaute Threading-Bibliothek zu verwenden. Sie sind keine "echten" / Kernel-Threads Sie haben Probleme (wie die Serialisierung), sind aber gut genug. Sie brauchen eine Warteschlange und einen Thread-Pool. Eine Option ist hier aber es ist trivial, eine eigene zu schreiben. Sie können nicht alle 100.000 Aufrufe parallelisieren, aber Sie können 100 (oder so) von ihnen gleichzeitig abfeuern.
- See previous answers
- Weitere Antworten anzeigen