2014-03-05 4 views
5

Gibt es eine Möglichkeit, ob ich überprüfen kann, ob meine flask-App ausgeführt wird, um einen Gunicorn-Container zu installieren? Momentan setze ich eine Umgebungsvariable, um meine Anwendung zu informieren, aber ich würde es vorziehen, dass es automatisch ist. Kann ich außerdem überprüfen, welche Arbeiterklasse verwendet wird?Erkennen ob Flasche über Gunicorn gefahren wird?


Ich muss dies aus verschiedenen Gründen feststellen. Beachten Sie, dass ich normalerweise Gunicorn benutze, aber während des Tests werde ich manchmal nicht.

  1. Protokollierung: Ich angehängt an ein Gunicorn-Info-Protokoll, wenn in Gunicorn laufen, sonst zu einem Stand Log.
  2. Eventlet/subprocess: Da ich Subprozesse verwende, muss ich sicherstellen, dass die richtige affe_patch'ing getan wird, wenn Eventlet verwendet wird, sonst verhält es sich nicht richtig. (Ich rufe viele Subprozesse auf).
+0

Ich bin gespannt, warum Sie dies erkannt werden sollen? –

+0

@BurhanKhalid, fügte der Frage einige Informationen hinzu. –

Antwort

12

spät, um die Partei, sondern eine sehr hacky-Lösung, die zu funktionieren scheint:

is_gunicorn = "gunicorn" in os.environ.get("SERVER_SOFTWARE", "") 
+0

Das ist nicht "sehr hacky". Es ist eine ziemlich standardmäßige Methode, um Daten im Stream weiterzugeben. –

+1

@TomaszZielinski Der einzige Grund, warum ich es hacky halte, ist, dass es nirgendwo dokumentiert zu sein scheint (AFAIK) und daher nicht garantiert ist, dass es verfügbar oder immer im selben Format ist. Ich wäre wohler, wenn Gunicorn eine dokumentierte Umgebungsvariable "IS_GUNICORN" hätte, die definiert wird, wenn Gunicorn meine App importiert. – univerio

+0

Ich habe am Ende eine 'IS_GUNICORN' Umgebungsvariable zu meinen Startskripten hinzugefügt und benutze sie. –