Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/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 为什么超时的请求调用会挂起?_Python_Python 3.x_Python Requests - Fatal编程技术网

Python 为什么超时的请求调用会挂起?

Python 为什么超时的请求调用会挂起?,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,我有一个程序,可以在几个线程中查询一系列API。对于其中两个API(我不控制),线程恰好冻结——可能是在HTTP请求上(我收到一个警报,告诉我调用已经有一段时间没有完成) 我最初认为这是一个问题,但我的代码处理了这一点,包括捕获异常: while True: try: r = requests.get('http://10.10.10.1', timeout=10) if not r.ok: raise ValueError('w

我有一个程序,可以在几个线程中查询一系列API。对于其中两个API(我不控制),线程恰好冻结——可能是在HTTP请求上(我收到一个警报,告诉我调用已经有一段时间没有完成)

我最初认为这是一个问题,但我的代码处理了这一点,包括捕获异常:

 while True:
    try:
        r = requests.get('http://10.10.10.1', timeout=10)
        if not r.ok:
            raise ValueError('wrong reply for API xxx: {t}, code: {c}'.format(t=r.text, c=r.status_code))
    except Exception as e:
        # cannot reach the API at all
        log.error('problem with API xxx: {e}'.format(e=e))
    else:
        (...)

    time.sleep(10)

记住这一点,
请求
调用挂起是否有原因?(
请求
2.12.4,Python 3.4+)。
(…)
下的代码部分由非常基本的非阻塞数据转换组成。

是API请求的结果非常大还是连接速度非常慢?如果它实际接收到数据,它不会超时,并且在获得所有数据之前它也不会返回……”超时不是整个响应下载的时间限制;相反,如果服务器在超时秒内没有发出响应,则会引发异常(更准确地说,如果在超时秒的基础套接字上没有接收到字节)。如果没有明确指定超时,则请求不会超时。“您的
请求
循环时钟是多少(哪个值是正常的(毫秒,美国)?)
虽然为True
timeout=10
但我无法想象
如何将这两个功能结合起来?
。当然,您可以同时使用它们,但不能将它们放在同一个过程中。如果您认为这个过程很快,请使用插座。“请求”不是本地的解决方案@dsgdfg:对不起,我不明白你的意思。
while
循环使调用永远重复,
sleep
将线程挂起一段时间,而
timeout
确保
请求
调用在另一方(API)出现问题时退出。“while循环使调用永远重复”永远需要对称过程!外部进程总是需要一个线程和状态比较器函数(
timeout
不为您做任何事情)。如何推送
实时数据?超时<代码>r=请求。获取('http://10.10.10.1“,timeout=10)
完全是错误的想法,因为您只收到了请求,需要使用
如果客户端已连接:server.push\u data()
,那么我们有相同的想法吗?不