2017-01-01 2 views
0

Ich erstelle eine Website, wo ich eine Taste zur Verfügung stellen, wo:Micro Download-Warteschlange

  • POST ein JSON auf einer Strecke (nichts schwer jetzt) ​​
  • aber der Prozess sollte auch Multiples starten system commands, und am Ende es eine Zip bietet der Benutzer herunterladen kann

, das zu tun, ich glaube, ich queue brauchen. Da zwei Benutzer gleichzeitig verbunden sind, kann der Prozess NICHT gestartet werden. Ist eine Warteschlange in Ordnung? Aber ich weiß nicht, wie man die Sitzung behält und die Zip-Datei zurücksendet ...

PS: Ich verwende angular2 & eine Python WS.

+0

Warum zwei Benutzer, die gleichzeitig verbunden sind, den Prozess nicht starten können? Das ist schlechtes Design. Viele Systembefehle sind ebenfalls schlecht. Geben Sie weitere Details an, was Sie erreichen möchten. – user902384

Antwort

0

Es gibt drei Teile auf Ihre Frage:

Erstens erlaubt nur eine Ausführung Ihres Systems pro Benutzerbefehl zu einem Zeitpunkt.

Dies könnte so einfach sein wie das Führen eines synchronisierten Flag-Bits pro Benutzer, das 1 speichert, wenn die Anfrage verarbeitet werden kann, andernfalls 0. Immer wenn eine Post-Anfrage kommt, prüfen Sie zuerst, ob dieses Flag gesetzt ist oder nicht. Weiter, wenn es nicht 1 ist, gebe einen Statuscode zurück, der nicht 200 ist. Andernfalls setze es auf 0 und trigger die Befehle.

Zweitens behandeln mehrere POST-Anforderungen, die die Systembefehle auslösen.

Sie sollten eine Warteschlange nur verwenden, wenn Ihre Systembefehle mehr Zeit benötigen und normalerweise im Hintergrund ausgeführt werden.

Drei, wie die Session

eine Sitzung zu binden, ist keine gute Idee zu halten. Sie haben zwei Möglichkeiten. Der eine Client puffert kontinuierlich zu einem anderen Endpunkt, um zu prüfen, ob die Zip-Erstellung abgeschlossen ist oder nicht. Zweitens, (besser als zuerst) verwenden Sie websockets, um die Benachrichtigung zurück an den Client zu senden, sobald die Zip-Erstellung abgeschlossen ist.