【问题标题】:Not able to get the response from django rest api using requests.get() method无法使用 requests.get() 方法从 django rest api 获得响应
【发布时间】:2018-06-26 12:58:40
【问题描述】:

我创建了一个 Django Rest 应用程序并公开了一项服务(获取用户列表)

现在,当我尝试通过 curl 请求调用时,我可以获取用户列表。

curl -v -XGET -i 'http://XXX.XX.XX9.XX1:8000/ebxxx/api/users/'

但是当我尝试使用 requests.get() 方法从另一个应用程序调用它时,我收到 504 服务器错误:

我正在尝试:

header = {"Content-type":"application/json"}

response = requests.get("http://XXX.XX.XX9.XX1:8000/ebxxx/api/users/", headers=header) 

错误:

"响应,响应"

【问题讨论】:

  • 504 响应代码为 Gateway timeout 错误。连接到 Web 服务器或防火墙配置可能有问题。
  • 但在我看来,如果我能够通过 curl 请求获得响应,它也应该在这种情况下得到(如果有任何防火墙问题,它也不应该适用于 curl 请求)
  • 如果您可以建议任何与防火墙相关的配置更改,我可以尝试
  • 我能看到的唯一区别是您在get() 方法中添加了额外的标头,而不是在 curl 请求中添加了此标头。
  • 是的,我尝试了两种情况(删除标头并在 curl 请求中添加标头),它工作正常。我用 Django rest 方法尝试过同样的事情,但仍然面临问题

标签: python django


【解决方案1】:

我遇到了问题,它与代理设置有关。

实际上,我正在使用两个虚拟机(两者都有不同的 IP)和两个不同的微服务(第一个虚拟机有用户注册服务(添加用户、删除用户、获取用户),第二个虚拟机有一个服务来调用用户注册服务使用django rest 框架)。

现在虚拟机在局域网中工作,具有一定的网络权限,所以我必须设置代理范围,然后我必须启动服务器。

在运行 Django 服务器之前,我使用以下命令进行代理设置:

export no_proxy='我的 IP/范围'

现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2022-11-23
    • 2014-06-06
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多