2017-10-25 3 views
0

Ich entwerfe einen Dienst, der ~ 30-50 Websocket-Verbindungen öffnen würde, die finanzielle Tick-Daten erhalten und sie in MongoDB schreiben; Es ist möglich, dass Hunderte von Nachrichten jede Sekunde empfangen werden. Ich verwende Python Twisted Websocket von Autobahn, aber ich frage mich, ob es skalierbar ist, wenn man einen asynchronen Thread ausführt. Mein Instinkt ist, dass Twented und MongoDB mit einem einzigen Thread diesen Durchsatz bewältigen können, aber ich möchte diese Hypothese bestätigen.Wie viel Durchsatz kann Twisted Reaktor mit Websocket umgehen?

I 3 mögliche Optionen:

  1. 1 Faden, eine Verbindung zu allen websocket Endpunkte und rufen reactor.run().
  2. Jede Websocket-Verbindung gehört zu einem eigenen Thread, der eine eigene reactor.run() hat. Führen Sie es als einen Haupt-Unix-Daemon aus, der alle Threads hervorbringt.
  3. Jede Websocket-Verbindung gehört zu einem eigenen Thread, der in verschiedenen Skripten als Unix-Daemonen läuft.

Was wäre die robusteste Option? Danke vielmals!

+0

Option 3. ist die einzige, die mehrere CPU-Kerne nutzen kann, wenn das wichtig ist. – freakish

Antwort

0

Soweit Sie Ihr Problem beschreiben, ist Ihre Anwendung IO gebunden nicht CPU-gebunden. Wenn Sie eine asynchrone Lösung verwenden, sollten Sie versuchen, Threads zu vermeiden. Es ist nicht so, dass Twisted Threads it does nicht unterstützt, aber Threads sind nur Overhead, wenn Sie asynchron programmieren. Twisted und Autobahn können viel IO verarbeiten, bevor sie anfangen, CPU zu verbrauchen. Solange Ihr Anwendungscode keine hohe CPU-Leistung hat, wird Ihnen nichts passieren.

Verwandte Themen