Frage

Ich suche nach einfachen Möglichkeiten zu überwachen und die Anzahl der Instanzen unserer Anwendung unter Terminal Server (2003 und 2008) zu begrenzen.

Der Zweck dieser Beschränkung ist es, sicherzustellen, dass wir nicht überlasten unsere Server. Dies ist eine interne administrative Anforderung. - Ich bin nicht für eine Lizenzlösung suchen

Die betreffende Anwendung ist in Python 2.6 (32-Bit) geschrieben, aber ich bin glücklich, Entwicklungs-Tool Agnostiker Antworten zu erhalten. Obwohl wir nicht mit Citrix sind, ich bin glücklich Citrix verwandte Ideen mit der Hoffnung zu erhalten, dass ich eine ähnliche Technik mit Terminal-Server verwenden kann.

War es hilfreich?

Lösung

Die verschiedenen Instanzen Ihrer Anwendung benötigen irgendeine Weise miteinander zu kommunizieren. Wenn eine Instanz gestartet wird, fragt es die Frage, ‚wie viele bereits ausgeführt werden?‘. Wenn es mehr als die erlaubten n ist, wählt es nicht zu starten.

Eine Implementierung Ansatz könnte darin bestehen, n Dateien zu sperren, für die n Instanzen Ihrer Anwendung, die Sie erlauben, laufen zur gleichen Zeit zu machen. Dann versucht die Anwendung eine Sperre auf eine dieser Dateien zu erhalten; wenn es nicht kann, es tritt sofort. Lassen Sie die Sperre, wenn Sie fertig sind, aber vermutlich das Betriebssystem würde die Sperre für Sie, wenn Sie zum Absturz bringen.

Ein weiterer Ansatz wäre, eine pro-Prozess einzigartige Stück Information zu registrieren (ein PID?) In zentraler Lage (einige Datenbank), wenn Sie beginnen.

Noch ein dritte einen Host-Only-Netzwerk Server, auf dem entweder ein dediziertes Server-Programm oder eine der Instanzen koordiniert die Kommunikation mit den anderen Instanzen zu verwenden sein könnte. Wenn die Host-Ausgänge, eine der anderen Instanzen kann selbst fördert der Server zu sein.

Andere Tipps

Basierend auf dem Feedback auf der API-Mailingliste Python Win32 ich auch eine der folgenden Techniken überlege ich:

  1. Verwenden von Windows-Semaphore

  2. einen Pool von Mutexes Verwendung (bieten eine bessere Verwertbarkeit als Semaphore)

  3. eine Reihe von Ports

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top