Python 客户端未收到Flask应用程序响应

Python 客户端未收到Flask应用程序响应,python,flask,python-requests,jupyter-notebook,Python,Flask,Python Requests,Jupyter Notebook,我有一个flask应用程序运行一些计算,我从一个Jupyter笔记本中请求。客户端代码遵循基本格式: outputs = [] for batch in request_batches: response = requests.post(flask_address, json=json.dumps(batch), timeout=3600) outputs.append(response) 其思想是迭代一系列请求批处理(批处理对应用程序有意义)并收集响应 通常情况下,对于每一批

我有一个flask应用程序运行一些计算,我从一个Jupyter笔记本中请求。客户端代码遵循基本格式:

outputs = []
for batch in request_batches:
    response = requests.post(flask_address, json=json.dumps(batch), timeout=3600)
    outputs.append(response)
其思想是迭代一系列请求批处理(批处理对应用程序有意义)并收集响应

通常情况下,对于每一批,我会看到请求记录在Flask应用程序端,并在计算完成后确认Post

00.000.000.000 - - [29/Apr/2020 02:21:46] "POST //docking HTTP/1.1" 200 -
一个批处理完成后,循环继续并发送下一个请求

我遇到的问题是,有时烧瓶大小的计算时间比正常情况稍长,这会导致笔记本中的请求循环挂起(注意,比正常情况长几分钟,远远低于设置的超时时间)。关于烧瓶尺寸,计算成功完成,并有一个后期确认

在笔记本大小上,循环挂起,并且没有进一步的请求。这不是超时问题-没有超时错误。笔记本电脑一直挂着,直到我手动中断它

当我中断时,我看到以下堆栈跟踪:

~/opt/anaconda3/envs/env/lib/python3.7/socket.py in readinto(self, b)
    587         while True:
    588             try:
--> 589                 return self._sock.recv_into(b)
    590             except timeout:
    591                 self._timeout_occurred = True
中断后,我可以确认导致循环挂起的响应没有添加到输出中。因此,Flask应用程序不知何故发布了响应,但客户端笔记本没有收到响应。同样,95%的时间运行正常,但5%的时间(请求处理时间较长)会导致请求循环冻结

有人知道如何调试这个吗