我正在通过REST API从Heroku上的云服务器向AWS EC2中的数据库上传数亿个项目到我的数据库。我正在使用Python,并且我不断在日志中看到以下INFO日志消息。
[requests.packages.urllib3.connectionpool] [INFO] Resetting dropped connection: <hostname>
在我的代码继续执行之前,这个“重置已断开的连接”似乎需要几秒钟(有时30秒以上)。
感谢您的帮助。 安德鲁。
答案 0 :(得分:12)
请求使用Keep-Alive
by default。根据我的理解,Resetting dropped connection
意味着应该活着的连接以某种方式被删除。可能的原因是:
Keep-Alive
。有关详细信息,请参阅https://stackoverflow.com/a/25239947/2142577。
答案 1 :(得分:10)
问题实际上是服务器已关闭连接,即使客户端已请求它保持活动状态。
这不一定是因为服务器不支持keepalive,但可能是服务器配置为仅允许连接上的特定数量的请求。这样做可以帮助在不同的服务器上分散请求,但我认为这种做法是常见的,可以防止在服务器中运行的编写不良的代码(例如PHP)在服务后不能自行清理请求(可能是由于错误条件等)
如果您认为这种情况就是这种情况,并且您不希望看到这些日志(在INFO级别记录),那么您可以添加以下内容来平息该部分日志记录:
# Really don't need to hear about connections being brought up again after server has closed it
logging.getLogger("requests.packages.urllib3.connectionpool").setLevel(logging.WARNING)
答案 2 :(得分:4)
这是公开RESTful API以避免滥用(或DoS)的服务的常见做法
如果你强调他们的API,他们就会放弃你的连接。
尝试让你的脚本偶尔睡一会儿以避免跌落。