【问题标题】:HTTPConnectionPool: Max retries exceeded Caused by NewConnectionError: Failed to establish a new connection: [Errno 13] Permission deniedHTTPConnectionPool:超过最大重试次数由 NewConnectionError 引起:无法建立新连接:[Errno 13] 权限被拒绝
【发布时间】:2021-01-22 06:21:28
【问题描述】:

您好,我正在尝试从某个 URL 获取 REST 请求,如果我直接在浏览器中输入该 url,它可以正常工作,输出如下图所示

如果我还尝试在我的 django 应用所在的同一台服务器上通过本机 python 查询 url,它也可以正常工作。

问题是当我在我的 django 项目中将请求放入 view.py 时,我得到一个连接错误作为这个问题的标题。

import requests

def my_method(request):
    response = requests.get('http://10.150.20.103:8000/se/se-seid')
    special_events_dashboard_events = response.json()
    for event in special_events_dashboard_events['events']:
        context['special_events'].append(event)

    return render(request, 'updates/updates_network.html', context)

当我在浏览器中检查页面时,我收到此错误。

REST API url 与我的 django 应用程序具有不同的 IP 地址

这是我的 django 应用程序中的设置问题吗?如何解决这个问题?我一直在互联网上搜索,但我似乎无法找到答案。

【问题讨论】:

  • 您确定您的 django 应用程序甚至可以看到 API 吗? API 是否会阻止没有特定标头的请求? API 是否在防火墙后面...?
  • @goalie 实际上那是我不确定的事情,显然我的 django 应用程序无法连接到它。让我想知道的是,当我在我的 django 应用程序所在的同一台服务器上尝试香草 python 时,如上图第二张所示,它可以访问 api 而无需额外的标头。
  • @JCm 你试图在同一个 Django 项目中调用 Django URL ???
  • @c.grey 不,先生,我请求数据的 url 是不同的 django 项目,它也在不同的服务器上。
  • @JCm 是这个 Django 10.150.20.103:8000/se/se-seid

标签: python python-3.x django python-requests


【解决方案1】:

我在这里找到了问题的答案。事实证明,导致问题的不是 django,而是部署了我的 django 项目的服务器的 Selinux 设置。

我在这里发现了this 类似的权限错误问题,其中解决方案指出启用 httpd_can_network_connect 上下文。将上下文设置为 ON 后,我现在可以连接到 api url。

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2016-11-17
    • 2017-04-20
    • 2011-06-11
    相关资源
    最近更新 更多