2017-02-03 5 views
0

Ich versuche, eine Tornado API mit Supervisor Service zu betreiben.supervisorctl kann virtuelle Umgebung nicht neu laden Datei aktivieren

Dies ist die Konfiguration, die ich geschrieben habe meine Anwendung mit Vorgesetzten auszuführen:

[program:tornado_main] 
command=/home/ubuntu/env/bin/python /home/ubuntu/<repo>/__main__.py 
directory=/home/ubuntu/<repo> 
user=ubuntu 
stdout_logfile = /var/log/supervisor/tornado_main.log 
stderr_logfile = /var/log/supervisor/tornado_main_err.log 
environment=PATH=/home/ubuntu/env/bin,PYTHONPATH=/home/ubuntu/<repo>,VIRTUAL_ENV=/home/ubuntu/env/ 

Dies läuft perfekt.

Es gibt einige Teile im Code, die von einigen Umgebungsvariablen abhängen, die in der Aktivierungsdatei der virtuellen Umgebung geschrieben sind.

Nun ist das Problem, dass der Supervisor diese Umgebungsvariablen nicht lesen kann und Fehler auslöst. Wenn ich es manuell ausführe, funktioniert es gut.

Was fehlt mir?

Antwort

1

Wenn Sie env/bin/python ausführen, verwenden Sie die virtualenv ohne Aktivierung es. Das ist oft genug, aber wenn Sie wirklich davon abhängig sind, dass die virtualenv aktiviert ist (zB weil Sie Subprozesse in dieser Umgebung starten oder andere Umgebungsvariablen verwenden wollen), dann müssen Sie es in Ihrer Supervisor-Konfiguration aktivieren (und wenn Sie dies tun) Sie werden wahrscheinlich die environment Linie entfernen möchten, die dupliziert, was activate tun wird):

command=bash -c 'source /home/ubuntu/env/bin/activate && python /home/ubuntu/<repo>/__main__.py' 
+0

Danke .. ich werde es versuchen. Obwohl ich einen schmutzigen Hack von allen meiner Env-Variablen in der "Umgebung" -Linie kam. –

Verwandte Themen