首页 > 解决方案 > 在特定时间后停止从 API 中提取数据

问题描述

我正在使用 python v3 从流 API 中提取一些数据,我需要在 60 秒后停止提取这些数据。此外,如果有人对 chunk_size 或其他流媒体替代方案有建议,我会对此持开放态度。到目前为止,这就是我所拥有的:

response = requests.get('link to site', stream=True)

for data in response.iter_content(chunk_size=100):
    print(data)

标签: pythonpython-requests

解决方案


猜测多于答案,但您可以设置一个计时器,然后关闭响应。这可能会做到,但我没有一个很好的方法来测试它。我不知道响应关闭时会出现哪个异常,因此我将它们全部捕获并打印,以便可以更改代码。

import threading

response = requests.get('link to site', stream=True)
timer = threading.Timer(60, response.close)
try:
    timer.start()
    for data in response.iter_content(chunk_size=100):
        print(data)
    except Exception as e:
        print("you want to catch this", e)
finally:
    timer.cancel()

推荐阅读