gpt4 book ai didi

python - 如何在 5 分钟后没有回复的情况下取消请求

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:53 26 4
gpt4 key购买 nike

我有以下功能,

import requests

def get_url_type(data):
x = {}
for i in range(0,len(data)):
print i
try:
x[i] = requests.head(data['url'][i]).headers.get('content-type')
except:
x[i] = 'Not Available'
return(x)

此函数返回传递给它的每个 URL 的 URL 类型,只要没有响应,它就会抛出使用异常捕获的错误。我的问题是,一些请求需要超过 5-10 分钟的时间,这在生产环境中太多了。我希望函数在超过 5 分钟时返回“不可用”。当我对此进行研究时,提到将函数转换为异步函数。我试图改变它,但没有成功。

下面是我试过的,

import asyncio  
import time
from datetime import datetime

async def custom_sleep():
print('SLEEP', datetime.now())
time.sleep(5)

我的目标是,每当请求函数花费超过 5 分钟时,它应该返回“不可用”并移至下一次迭代。

谁能帮我做这件事?

提前致谢!

最佳答案

您似乎只是希望请求在给定时间过去后没有回复而超时,然后继续下一个请求。对于此功能,您可以将 timeout 参数添加到您的请求中。关于此的文档:http://docs.python-requests.org/en/master/user/quickstart/#timeouts .

超时 300 秒(5 分钟)后,您的代码将变为:

requests.head(data['url'][i], timeout=300)

您提到的异步功能实际上有不同的目标。这将使您的代码在继续执行之前根本不必等待 5 分钟,但我相信那将是一个不同的问题。

关于python - 如何在 5 分钟后没有回复的情况下取消请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49910152/

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