我可以使用uwsgi协议来调用http吗?

2024-06-17 10:15:46 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是数据流: http<;-->;nginx<;-->;uWSGI<;-->;python webapp

我猜nginx中有http2uwsgi传输,uWSGI中有uwsgi2http。在

如果我想直接调用uWSGI来测试webapp中的API呢?在

实际上我用的是金字塔。只需在.ini中配置[uwsgi]并运行uwsgi。但是我想测试一下uWSGI是否能正常运行webapp功能,uWSGI套接字不能通过http直接访问。在


Tags: ltgt功能apihttpnginxuwsgiini
3条回答

尝试使用uwsgi_curl

$ pip install uwsgi-tools

$ uwsgi_curl 10.0.0.1:3030 /path

或者,如果您需要执行更多请求,请尝试来自同一个包的uwsgi_proxy

^{pr2}$

所以您可以在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参数将此类请求重定向到您的前端服务器。如果需要,还可以指定不同的本地端口。在

首先,考虑以下问题:

  • uWSGI在哪个端口运行?在
  • uWSGI是在你的机器上运行还是在远程机器上运行?在
  • 如果它在远程计算机上运行,您的计算机是否可以访问该端口?(iptables规则可能禁止外部访问)

如果您确定您有访问权限,您只需调用http://hostname:port/path/to/uWSGI进行直接API访问。在

根据你的问题,我假设,你想直接用uWSGI运行你的WSGI兼容应用,并打开一个HTTP套接字。您可以通过配置uwsgi.ini文件(或任何文件名)与

http=127.0.0.1:8080

uwsgi现在将打开一个HTTP套接字,在端口8080上监听来自localhost的传入连接(参见文档:http://uwsgi-docs.readthedocs.org/en/latest/HTTP.html

或者,您可以使用http参数从命令行直接启动进程:

^{pr2}$

如果使用unix套接字配置uwsgi nginx可以通过uwsgi协议(http://uwsgi-docs.readthedocs.org/en/latest/Protocol.html)与该套接字通信。在

请记住,如果您通常通过nginx提供静态内容(css、javascript、图像),那么如果您直接运行uwsgi,您也需要设置这些内容。但是如果您只想测试一个REST-API,这应该对您有用。在

相关问题 更多 >