Wie man Gunicorn die Verwendung von Python 3 anstelle von Python 2 (502 Bad Gateway)
Ich versuche Gunicorn zu verwenden Python ist3 für eine Django-app, die ich machen will. Ich bin mit Digital Ocean ' s Django Bild, um loszulegen. Es kommt mit Django, Gunicorn und Nginx installiert und konfiguriert. Die Standard-Django-Projekt, kommt mit diesem Bild, scheint zu funktionieren für Python 2.
Habe ich apt-get
'ed diesen Paketen.
- Python ist3
- Python ist3-psycopg2
- Python ist3-dev
- Python ist3-pip
Um zu versuchen, um Probleme zu vermeiden, habe ich dies auch getan.
- pip uninstall django
- pip3 install django
Ich rm -rf
'ed Lager-Projekt und erstellt eine neue mit django-admin.py startproject django_project
. django-admin.py
verwendet Python 3 (nach der shebang). Später, ich benutze python3 manage.py startapp django_app
zum erstellen einer neuen app.
Zu diesem Zeitpunkt funktioniert alles einwandfrei. Genau wie die Standard-app. Dann, in django_app/views.py
ich dies tun, und es bricht.
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
# Python 2 and 3 - works fine
# print('PRINTING')
# Python 3 only - crashes
print(1, 2, end=' ')
return HttpResponse("Hello, world! This is my first view.")
Die Fehlerseite, die sagt, ich bin mit Python 2.7.6.
Okay, dann dachte ich, ich könnte installieren Gunicorn durch pip für Python 3, also Tue ich dies.
- pip uninstall gunicorn
- pip3 installieren gunicorn
Aber ich habe dann einfach am Ende mit 502 Bad Gateway. Wenn ich service gunicorn status
bekomme ich gunicorn stop/waiting
. Ich habe versucht service gunicorn restart
aber es sagt immer noch gunicorn stop/waiting
.
Habe ich ein which gunicorn
und es installiert /usr/local/bin/gunicorn
. Uhh... ich bin mir nicht wirklich sicher, was ich sonst noch versuchen könnte. Jegliche Hilfe würde sehr geschätzt werden. Danke.
InformationsquelleAutor der Frage 425nesp | 2014-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es wahrscheinlich einfacher, neu anzufangen. Tutorial auf https://www.digitalocean.com/community/articles/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn.
Ich habe es auf einem frischen ubuntu 14.04 Tropfen. Installieren Sie Python ist3 und django und Folgen Sie dann einfach dem tutorial. Nicht die postgres oder virtualenv bits aber.
InformationsquelleAutor der Antwort wardk
Falls die beiden links, Pause für einen Tag, hier ist, wie ich es geschafft habe.
Starten nach der Ausführung dieser Anweisungen.
pip uninstall gunicorn
pip3 install gunicorn
Installieren
supervisor
sudo apt-get install supervisor
.Nächsten, die ich brauchte, um
gunicorn_config.py
im root von meinem Projekt-Verzeichnis, das enthält diese.Dann habe ich eine Konfigurations-Datei für
supervisor
.vim /etc/supervisor/conf.d/gunicorn.conf
mit diesen Inhalten.Danach habe ich ein
supervisorctl reread
undsupervisorctl update
und dann begann es zu arbeiten.Können Sie
supervisorctl status gunicorn
um zu überprüfen, obgunicorn
ausgeführt wird oder nicht. Sie könnensupervisorctl restart gunicorn
neu zu starten.InformationsquelleAutor der Antwort 425nesp
mein Weg:
InformationsquelleAutor der Antwort snow
Schrieb das folgende Skript aus, um wechseln zu Python 3.4 mit DigitalOcean ' s 14.04 Django Bild, wie ich wollte, es zu sein, ein schönes ein-Schritt-setup ist... Es wird gewartet https://gist.github.com/tr00st/190ab4de62f9b23bea69
Den Haupt-Problem mit dem setup war für mich mit gevent, die Umstellung auf tornado für Arbeitnehmer, die fein gearbeitet.
InformationsquelleAutor der Antwort tr00st
Wenn man sich die
gunicorn
ausführbare Datei, es ist nur ein kleines python-Skript:Der wichtige Teil ist die
from gunicorn.app.wsgiapp import run
Linie, die sagt, dass Sie die Position des Moduls responsibe für den Betrieb Ihrer app. Wenn gunicorn ist die Qualität von code (was es ist), sollten Sie in der Lage sein, zu importieren, das Modul direkt von der Kommandozeile ein und führen Sie Ihre app aus."Importieren Sie das Modul direkt von der Kommandozeile aus" bedeutet, dass die
-m
- Befehl Linie Schalter.Unter Verwendung der python-Wahl:
Und sicher genug, es läuft!
Dieses Verhalten ist sehr nützlich, zum Beispiel beim laufen gunicorn von irgendwo wie ein Dockerfile.
InformationsquelleAutor der Antwort bcattle
Hatte ich das gleiche Problem auf Digitale Ozean mit dem droplet "Ubuntu Django auf 14.04".
Erkannte ich, dass die 'gevent' Arbeiter-Typ war das problem für mich bei der Verwendung von Python 3. Obwohl ich habe mit
python3 -m pip freeze
dass 'gevent' installiert war, funktionierte es nicht. Ich geändert es zu "sync' in /etc/gunicorn.d/gunicorn.py:Habe ich neu gestartet gunicorn:
Überprüfte ich die gunicorn service wurde ausgeführt mithilfe von
service gunicorn status
und war in der Lage, um zu sehen, willkommen auf der django-Seite durch das erreichen meine Tropfen die ip-Adresse.Ich hoffe, das funktioniert für andere Menschen.
InformationsquelleAutor der Antwort Yves
Installieren Python ist3 virtuellen Umgebung in Ihrem Projekt-Ordner
Führen gunicorn in der aktivierten Umgebung
InformationsquelleAutor der Antwort Dexios1
Hier ist, wie ich es für mich arbeiten. Ich habe installiert gunicorn sowohl mit pip2 und pip3. Ich brauche beide Versionen. Die Voreinstellung ist gunicorn mit pip2.
Was ich Tat, war, die ich installiert gunicorn mit virtualenv mit pip3 und schaute sich den Inhalt der Datei gunicorn unter bin in der virtualenv Ordner, die besagt, dass
Ich kopierte die Datei und legen Sie es an anderer Stelle, dann wechselte ich
zu
Nun kann man gunicorn leicht wie dieser, nachdem er in das Verzeichnis, in das Sie die Datei kopiert haben gunicorn in
Hinweis: tun pip3 deinstallieren gunicorn, gefolgt von pip3 installieren gunicorn installieren gunicron mit Python ist3 version (überschreiben der python2-version) im Verzeichnis 'usr/local/bin (ubuntu), und dann können Sie den Inhalt der Datei von gunicron es. Dies wird Ihnen helfen, vermeiden Sie die Verwendung von virtualenv.
Wenn das nicht funktioniert zum ersten mal, tun pip3 unistall gunicorn, gefolgt von pip3 installieren gunicorn.
Glücklich unicorning 😉
InformationsquelleAutor der Antwort eddys
Die Art, wie ich es geschehen war, zu deinstallieren gunicorn von überall:
Und dann Installieren
gunicorn
von der Quelle.Jetzt läuft alles ohne problem.
InformationsquelleAutor der Antwort Alex Jolig
Scheint es, dass es ein Paket dieses namens
gunicorn3
(dies wurde getestet auf ubuntu)sudo apt-get install gunicorn3
dann folgenden Befehl ausführen, sollte die Arbeit und führen gunicorn mit Python ist3:
gunicorn3 --log-level debug --bind 0.0.0.0:30443 server:app
InformationsquelleAutor der Antwort papadp