gpt4 book ai didi

python - 请求中的 url 上的 ReadTimeout 获取?

转载 作者:行者123 更新时间:2023-12-04 03:37:06 26 4
gpt4 key购买 nike

url="https://www.nseindia.com/companies-listing/corporate-filings-actions"
# second url I am trying
# url = "https://www.nseindia.com/json/CorporateFiling/CF-corpactions-equity.json"

我正在尝试获取 json 响应。

我已经尝试过类似帖子中建议的一系列操作。

import requests as r
headers = {
"Connection": "keep-alive",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}
resp = r.get(url, headers=headers)
resp.json()
## Stuck for 20 minutes no response.

我尝试了超时:

resp = r.get(url, headers=headers, timeout=20)
# Timed out

还尝试了 catch except block ,但仍然无法正常工作。

我在这里做错了什么?

最佳答案

在 UNIX 上,我使用以下 Timeout 类,它利用 UNIX SIGALARM 在这种情况下中断代码的执行:

import signal

class TimeoutError(Exception):
"""
Custom error for Timeout class.
"""

pass


class Timeout:
"""
A timeout handler with context manager.
Based on UNIX signals.
"""

def __init__(self, seconds=1, error_message="Timeout"):
self.seconds = seconds
self.error_message = error_message

def handle_timeout(self, signum, frame):
raise TimeoutError(self.error_message)

def __enter__(self):
signal.signal(signal.SIGALRM, self.handle_timeout)
signal.alarm(self.seconds)

def __exit__(self, type, value, traceback):
signal.alarm(0)

您可以像这样非常简单地使用它:

with Timeout(20):
try:
resp = r.get(url, headers=headers)
resp.json()
except TimeoutError:
print('Timed out')
print('done')

关于python - 请求中的 url 上的 ReadTimeout 获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66673389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com