我正在使用requests post发送一些数据,现在我已经将www.example.com的超时值设置requests.post为60左右。其他类似的问题与特定的应用程序有关,所以我想将其作为一般的python错误来问。
这是我得到的错误:
failed to connect ('Connection aborted.', timeout('The write operation timed out'))
我假设这是因为某种原因我的线程无法及时发送所有数据,但我不确定,所以只是想检查一下。所以:
1.这个错误的发生是因为线程不能在超时时间内发送所有的数据吗?
1.如果是这样的话,有没有我可以设置超时的方式,只有启动后,我发送了所有的数据了?我不想等待永远的服务器响应,但显然我想定时器启动时,我发送所有的数据了,而不是在函数调用的开始.(和数据我发送的大小变化)
2条答案
按热度按时间brc7rcf01#
如果你使用的是python-request library,你可以把'timeout'参数指定为一个元组,第一个元素是“connectiontimeout”,第二个元素是“readtimeout”。
requests使用urrlib3.util.Timeout。Per the urllib3 docs,将读取超时设置为None将永远等待服务器响应。但是,我同意永远等待是个坏主意。
您在请求中发送了多少数据?我通读了一些python请求代码,但找不到一种简单的方法来检测请求何时发送完毕。
作为概念验证,我基于urequests (micro requests)编写了this code
它允许你传递一个回调函数给requests.get(),这个回调函数将在所有请求数据发送之后,服务器收到任何数据之前被触发。
kulphzqa2#
这可能是因为一个网络问题,如果该项目被带到一个生产服务器与高速互联网,应该解决这个问题(我仍然要检查我的项目)。
但是对于开发来说,你可以给予一下: