【问题标题】:Python requests timeout in AWS LambdaAWS Lambda 中的 Python 请求超时
【发布时间】:2021-02-28 08:06:37
【问题描述】:

以下 url 的 Python 请求从 AWS Lambda 超时。

https://www.nseindia.com/get-quotes/derivatives?symbol=NIFTY https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY

它适用于其他网址。

工作网址 - https://support.oneskyapp.com/hc/en-us/article_attachments/202761627/example_1.json

下面是我正在使用的代码。

import requests

def lambda_handler(event, lambda_context):
    headers = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}
    
    with requests.session() as rq:
        print("Loading cookies")
        rq.get("https://www.nseindia.com/get-quotes/derivatives?symbol=NIFTY", headers=headers)

        print("Execute get request")
        result = rq.get("https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY", headers=headers)

我的 Lambda 使用 Python3.7 运行时,未与任何 VPC 关联,超时设置为 1 分钟。我尝试了 5 分钟的 Lambda 执行超时仍然没有运气。

输出

响应:{“errorMessage”:“2020-11-17T04:58:34.039Z 0f69a07d-6139-4aab-b1cf-310b19243735 60.06 后任务超时 秒”}

请求 ID:“0f69a07d-6139-4aab-b1cf-310b19243735”

函数日志:START RequestId:0f69a07d-6139-4aab-b1cf-310b19243735 版本:$LATEST 正在启动请求会话...正在加载 cookie END 请求 ID:0f69a07d-6139-4aab-b1cf-310b19243735 报告请求 ID: 0f69a07d-6139-4aab-b1cf-310b19243735 持续时间:60060.48 毫秒 持续时间:60000 毫秒内存大小:128 MB 使用的最大内存:59 MB 初始化 持续时间:383.95 毫秒 2020-11-17T04:58:34.039Z 0f69a07d-6139-4aab-b1cf-310b19243735 60.06 后任务超时 秒

我猜这与User-Agent 标头有关。任何帮助将不胜感激。

【问题讨论】:

  • 在这个问题上有什么突破,@LG555 ???

标签: python-3.x aws-lambda python-requests


【解决方案1】:

可能是https://www.nseindia.com/ 阻止 AWS IP,因为它们不想被抓取?

这是我尝试从我的一台 EC2 机器上打开它时得到的结果

[ec2-user@ip-10-2-120-90 ~]$ curl https://www.nseindia.com/get-quotes/derivatives?symbol=NIFTY
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

You don't have permission to access "http&#58;&#47;&#47;www&#46;nseindia&#46;com&#47;get&#45;quotes&#47;derivatives&#63;" on this server.<P>
Reference&#32;&#35;18&#46;d6d3dead&#46;1605602802&#46;2598bb12
</BODY>
</HTML>

【讨论】:

  • 当我从本地机器卷曲时,我遇到了同样的权限问题。但它正在从本地机器上的 Python 控制台获得响应。
  • 明天我会用来自 EC2 的 requests 模块得到什么。
  • 我没看懂你上面的评论。
  • 我尝试从我的一个 EC2 实例运行您的代码,但也遇到了超时。 &gt;&gt;&gt; headers = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'} &gt;&gt;&gt; resp = requests.get("https://www.nseindia.com/get-quotes/derivatives?symbol=NIFTY", headers=headers, timeout=30) requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='www.nseindia.com', port=443): Read timed out. (read timeout=30) 如您所见,这是我的外发 IP,来自 AWS 范围。 $ curl ifconfig.so 34.252.34.74
猜你喜欢
  • 2021-07-23
  • 2019-10-06
  • 2020-05-28
  • 1970-01-01
  • 2019-02-07
  • 2019-11-15
  • 2020-11-16
  • 1970-01-01
相关资源
最近更新 更多