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.

  • Uwsgi Fehler python Anwendung nicht gefunden
  • Wie setze ich Unterverzeichnis in nginx mit Django ein
  • WSGI vs uWSGi mit Nginx
  • Remote Hotplug Python Debugger
  • UWSGI + NGINX 502 Bad Gateway
  • Python subprocess.Popen langsam unter uWSGI
  • Warum gibt PyMongo 3 ServerSelectionTimeoutError?
  • Verwenden Sie eine App für mehrere uwsgi-Instanzen
  • UWSGI, gevent, ein paar redis Anrufe und wie man Timeout ein Post, wenn mehr als 90 ms
  • Nginx + uwsgi + python3 Konfiguration funktioniert nicht
  • Nginx django uwsgi Seite nicht gefunden Fehler
  • Python ist die beste Programmiersprache der Welt.