Ich suche nach einem ElasticSearch Python-Client, der asynchrone Anfragen stellen kann. Zum Beispiel möchte ich diesen Code schreiben,
%Vor%Ich sehe jedoch keine Kunden (z. B. PyES oder den offiziellen Client ), die dies unterstützen. Außerdem koppeln die beiden, mit denen ich vertraut bin, die Anforderungslogik mit der Antwortverarbeitungslogik, so dass es schwierig erscheint, sie selbst zu modifizieren. Vielleicht wäre eine ausreichende Übergangslösung die Verwendung der asynchronen Version von Requests grequests ?
Es ist auch erwähnenswert, dass ElasticSearch _msearch
möglicherweise eine leistungsstärkere Option ist, aber für echte Anwendungen eine Code-Umstrukturierung erforderlich macht.
Sie können auch die folgenden Optionen zum Ausführen von E / A in Betracht ziehen, ohne den Hauptausführungsprozess mit vorhandenen Clients zu blockieren:
Die Verwendung von Gevent ist das leichteste (für RAM / CPU-Ressourcen) und ermöglicht die Verarbeitung der intensivsten I / O, ist aber auch die komplexeste unter den aufgeführten Lösungen. Beachten Sie auch, dass es in dem einzelnen Prozess funktioniert und den Vorteil von mehreren Kernen zu verwenden Multiprocessing Paket sollte verwendet werden.
Ich habe Txes in txes2 gegabelt . Es bietet eine mehr PEP8-freundliche Schnittstelle, Testabdeckung (Einheit und Integration) und Unterstützung für ES v1.x.
Noch immer in Arbeit, aber wahrscheinlich eine gute Wahl für Leute, die Twisted benutzen.
Mein Vorschlag ist, einfach bei CURLing alles zu bleiben. Es gibt so viele verschiedene Methoden, Filter und Abfragen, dass es für verschiedene "Wrapper" schwierig ist, alle Funktionen neu zu erstellen. Meiner Ansicht nach ist es vergleichbar mit der Verwendung eines ORM für Datenbanken ... Was Sie an Benutzerfreundlichkeit gewinnen, Sie verlieren an Flexibilität / roher Macht.
Gib CURL eine Weile und sieh zu, wie es dich behandelt. Sie können externe JSON-Formatierer verwenden, um Ihren JSON zu überprüfen, die Mailingliste, um nach Beispielen zu suchen, und die Dokumente sind in Ordnung, wenn Sie JSON verwenden.
Ich bin gerade auf diese Frage gestoßen. Es gibt einen offiziellen asynchronen Elasticsearch-Client, der auf asyncio basiert:
Tags und Links python asynchronous elasticsearch