这是一个数据流: http< - > nginx< - > uWSGI< - > python webapp
我猜nginx中有http2uwsgi转移,uWSGI中有uwsgi2http。
如果我想直接调用uWSGI来测试webapp中的API,该怎么办?
实际上我正在使用金字塔。只需在.ini中配置[uwsgi]并运行uWSGI。但我想测试uWSGI是否正常保持webapp功能,http不能直接访问uWSGI套接字。
答案 0 :(得分:7)
尝试使用uwsgi_curl
$ pip install uwsgi-tools
$ uwsgi_curl 10.0.0.1:3030 /path
或者如果您需要再做一些请求,请尝试使用同一个包中的uwsgi_proxy
$ 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...
因此您可以在http://127.0.0.1:3030/本地浏览。
如果您的应用程序仅允许某些Host
标题,您也可以指定主机名
$ uwsgi_curl 10.0.0.1:3030 host.name/path
$ uwsgi_proxy 10.0.0.1:3030 -n host.name
如果应用程序具有静态文件,您可以使用-s
参数将此类请求重定向到前端服务器。如果需要,您还可以指定不同的本地端口。
答案 1 :(得分:1)
首先,考虑一下这些问题:
如果您确定自己可以访问,则可以致电http://hostname:port/path/to/uWSGI
直接访问API。
答案 2 :(得分:1)
根据您提出的问题,您希望使用uWSGI直接运行符合WSGI的应用程序并打开HTTP-Socket。您可以通过使用
配置uwsgi.ini(或任何文件名)来实现http=127.0.0.1:8080
uwsgi现在将打开一个HTTP套接字,它在端口8080上侦听来自localhost的传入连接(参见文档:http://uwsgi-docs.readthedocs.org/en/latest/HTTP.html)
或者,您可以使用http参数从命令行直接启动进程:
$ uwsgi --http=127.0.0.1:8080 --module=yourapp:wsgi_entry_point
如果使用unix-socket配置uwsgi,nginx可以通过uwsgi-protocol(http://uwsgi-docs.readthedocs.org/en/latest/Protocol.html)与该套接字通信。
请记住,如果你通常通过nginx提供静态内容(css,javascript,images),你也需要设置它,如果你直接运行uwsgi。但是,如果您只想测试REST-API,那么这应该适合您。