Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Google应用程序引擎-ConnectionError:(';连接中止。';,错误(13,';权限被拒绝';)_Python_Python 2.7_Google App Engine - Fatal编程技术网

Python Google应用程序引擎-ConnectionError:(';连接中止。';,错误(13,';权限被拒绝';)

Python Google应用程序引擎-ConnectionError:(';连接中止。';,错误(13,';权限被拒绝';),python,python-2.7,google-app-engine,Python,Python 2.7,Google App Engine,我正在处理连接错误,需要帮助。我正在使用Python2.7和谷歌应用程序引擎来完成这个项目。我正在尝试使用第三方API检索要在我的网站上显示的其他信息,但我收到了ConnectionError。 错误如下所示: 第一个连接错误: requests/adapters.py", line 490, in send raise ConnectionError(err, request=request) ConnectionError: ('Connection aborted.', HTTPE

我正在处理连接错误,需要帮助。我正在使用Python2.7和谷歌应用程序引擎来完成这个项目。我正在尝试使用第三方API检索要在我的网站上显示的其他信息,但我收到了ConnectionError。 错误如下所示:

第一个连接错误:

requests/adapters.py", line 490, in send
    raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', HTTPException('Deadline exceeded 
while waiting for HTTP response from URL: http://stats.nba.com/stats/scoreboard?LeagueID=00&GameDate=03%2F03%2F2018&DayOffset=0',))
我不确定我是否正确地解决了这个问题,但我将中的基本URL的http更改为https

在那之后,它给了我一个警告:

requests/adapters.py", line 506, in send
        raise SSLError(e, request=request)
    SSLError: HTTPSConnectionPool(host='stats.nba.com', port=443): Max retries exceeded with url: /stats/scoreboard?DayOffset=0&GameDate=03%2F03%2F2018&LeagueID=00 (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",))
同样,我不确定是否正确修复了它,但我在app.yaml文件中添加了
name:ssl和version:latest

之后,它给了我另一个连接错误,我已经坚持了一段时间了

requests/adapters.py", line 490, in send
    raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', error(13, 'Permission denied'))

任何帮助或链接,它将帮助我解决这个问题将不胜感激。谢谢

由于您使用的是第三方API,因此无法真正提高其性能和可用性。您可以做的是减少此类故障对您自己的客户机的影响,方法是不将对外部API的调用直接放在构建对客户机请求的响应的关键路径中

如果您从第三方API获得并传递到客户端的信息不是实时的,则可以使用缓存设置:

  • 后台(定期和/或按需)作业向第三方API发出请求,以填充/刷新缓存
  • 您总是使用缓存中的信息(而不是直接从第三方API)回复客户机—性能和可用性在您的控制之下
另一种方法(即使您的第三方lib数据是实时/不可缓存的,因此您需要在每次客户请求时获取该数据,也可以使用该方法):

  • 使用您可以立即提供的响应部分和一个脚本来回复您的客户机请求,该脚本指示客户机跟进针对第三方API数据的AJAX请求,该请求仍处于挂起状态
  • 启动对第三方API数据的后台请求,如果需要重试
  • 每当您获得第三方API数据时,您都会用它回复AJAX请求
  • 在客户端,脚本将通过AJAX接收的数据组装到页面中并显示
对于基于按需刷新缓存的解决方案,您甚至可以混合使用这两种方法,其中AJAX响应为:

  • 如果数据足够“新鲜”,则立即从缓存生成,或者
  • 延迟,直到通过该客户端请求触发的请求从第三方接收到新数据

当然,在与第三方API交互时,您的代码需要准备并处理每一个这样的失败。

似乎NBA希望此端点(')仅用于普通浏览,而不是以编程方式访问。特别是考虑到他们没有公开记录。我个人建议您在访问此端点之前直接与他们联系,特别是如果您想从Google App Engine访问此端点

我是在使用curl对该端点执行一些http请求时得出这个结论的。例如,在使用第一个示例中的url时

我注意到:

  • curl请求在从localhost发送时工作,但需要一些头。如果存在这些头,它将以json格式返回数据,与来自浏览器的请求相同
  • curl执行的相同请求无法从或计算VM实例工作,它会无限期地等待回答
  • 如果请求已从App Engine标准设置中删除,则请求也会“失败”。已部署的应用程序和正在自动设置此用户代理。这就是为什么你会
  • ConnectionError:(“连接已中止”),HTTPException('超过截止日期 等待来自URL的HTTP响应时:

    要确定这一点,你必须询问NBA,但我的猜测是,NBA希望流量通过他们的网页,并通过阻止一些IP范围和一些大多数访问者不会使用的用户代理来保护自己不被破坏。直接与他们联系是一条路。

    随着,
    请求
    现在在生产和发展:

    from requests_toolbelt.adapters import appengine
    appengine.monkeypatch()
    
    有关详细信息