Kann ich das uwsgi-Protokoll verwenden, um http anzurufen?

Hier ist ein Datenfluss: http <-> nginx <-> uWSGI <-> python webapp

Ich denke, es gibt http2uwsgi Transfer in Nginx, und uwsgi2http in uWSGI.

Was passiert, wenn ich UWSGI direkt anrufen möchte, um eine API in einem Webapp zu testen?

Eigentlich benutze ich pyramide Einfach config [uwsgi] in .ini und laufe uWSGI. Aber ich möchte testen, ob uWSGI Webapp-Funktion normal hält, die uWSGI-Buchse ist nicht direkt von http erreichbar.

3 Solutions collect form web for “Kann ich das uwsgi-Protokoll verwenden, um http anzurufen?”

Versuchen Sie mit uwsgi_curl

 $ pip install uwsgi-tools $ uwsgi_curl 10.0.0.1:3030 /path 

Oder wenn Sie noch mehr Anfragen machen müssen, versuchen Sie uwsgi_proxy aus dem gleichen Paket

 $ uwsgi_proxy 10.0.0.1:3030 Proxying remote uWSGI server 10.0.0.1:3030 "" to local HTTP server 127.0.0.1:3030... 

So können Sie es lokal auf http://127.0.0.1:3030/ durchsuchen.

Wenn Ihre Anwendung nur bestimmte Host Header erlaubt, können Sie auch Host-Namen angeben

 $ uwsgi_curl 10.0.0.1:3030 host.name/path $ uwsgi_proxy 10.0.0.1:3030 -n host.name 

Wenn die Anwendung statische Dateien hat, können Sie solche Anfragen mit dem -s Argument auf Ihren Front-Server umleiten. Sie können bei Bedarf auch einen anderen lokalen Port angeben.

Zuerst betrachten diese Fragen:

  • Auf welchem ​​Port läuft uWSGI?
  • Ist uWSGI auf deinem oder auf einem entfernten Rechner?
  • Wenn es auf einem Remote-Rechner läuft, ist der Port von Ihrem Computer aus zugänglich? (Iptables-Regeln könnten den externen Zugriff verbieten)

Wenn Sie sichergestellt haben, dass Sie Zugriff haben, können Sie einfach http://hostname:port/path/to/uWSGI für direkten API-Zugriff http://hostname:port/path/to/uWSGI .

Aus deiner Frage gehe ich an, du willst deine WSGI-kompatible App mit uWSGI direkt ausführen und einen HTTP-Socket öffnen. Sie können dies tun, indem Sie Ihre uwsgi.ini (oder was auch immer der Dateiname ist) mit

 http=127.0.0.1:8080 

Uwsgi wird nun einen HTTP-Socket öffnen, der auf Port 8080 für eingehende Verbindungen von localhost hört (siehe Dokumentation: http://uwsgi-docs.readthedocs.org/de/latest/HTTP.html )

Alternativ können Sie Ihren Prozess direkt von der Kommandozeile aus mit dem http-Parameter starten:

 $ uwsgi --http=127.0.0.1:8080 --module=yourapp:wsgi_entry_point 

Wenn Sie unix-sockets verwenden, um uwsgi nginx zu konfigurieren, ist es möglich, mit dem Socket über das uwsgi-Protokoll ( http://uwsgi-docs.readthedocs.org/de/latest/Protocol.html ) zu kommunizieren.

Denken Sie daran, dass, wenn Sie in der Regel statischen Inhalt (CSS, Javascript, Bilder) durch nginx Sie müssen, um das auch, wenn Sie Uwsgi direkt ausführen. Aber wenn du nur eine REST-API testen willst, sollte das für dich sorgen.

  • Python version auf uwsgi wechseln
  • Django, uWSGI, gevent Schlaufe - Wie komme ich an die Arbeit - unfähig, app 0 zu laden (mountpoint = '')
  • Python subprocess.Popen langsam unter uWSGI
  • Super grundlegende uwsgi Konfiguration
  • UWSGI - Verschiedene Harakiri Timeout für Django Admin
  • Warum gibt PyMongo 3 ServerSelectionTimeoutError?
  • Nginx django uwsgi Seite nicht gefunden Fehler
  • Kommunikation zwischen den Arbeitern in uwsgi
  • Web2Py auf G-WAN laufen lassen (im Allgemeinen Python's Framework auf G-WAN)
  • WSGI vs uWSGi mit Nginx
  • Wie setze ich Unterverzeichnis in nginx mit Django ein
  • Python ist die beste Programmiersprache der Welt.