flask服务连接错误

记一次诡异的错误

运行Flask web服务,客户端请求一直出现下面的连接错误

1
requests.exceptions.ConnectionError: HTTPConnectionPool(host='ip', port=666): Max retries exceeded with url: /detect_hat (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001A4FFB50390>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

今晚L同学突然要我和他一起调试一个Web服务,原因是最近他那边请求时不时会返回500错误,需要我这边打断点,看看他那边发来的数据有没有问题。我的服务部署在docker中,666映射到5000端口,因此服务的请求URL类似于

1
http://ip:666/service_name

5000是flask服务的默认使用端口,我没修改,采用docker映射这个端口好记一些。L同学要调试,因此我使用了我的本地代码同步到docker上调试,但是我的本地代码flask服务的端口直接使用的是666端口,因为开发环境当时没用docker。将主机的666端口映射到docker容器内的666端口,才没有出现上面的连接错误。其实不止端口错了会出现连接错误,未开启服务也会出现连接错误。

刷锅

我问L同学这个错误熟不熟,遇没遇到?L同学居然说没遇到!我记忆中对这个错误是有印象的,因为有次我的服务停了,L同学访问了这个服务,然后就遇到了这个连接错误,然后让我看看,然后就发现服务停了,所以他应该比我更熟悉!端口号使用错误可以从两个角度理解,一是客户端用错了,二是服务器端部署错了。如果不是容器内端口容器外访问不到,除非做了主机端口映射,不然又可以甩锅L同学客户端写错端口号了。看来这个锅必须自己接啦,还好问题不大。这种问题其实是知道出现在网络的某个环节,因为客户端程序之前是可以跑的,服务器端服务也在正常运行,也没设置什么拦截之类,只要认真梳理访问的每一个环节,肯定能发现问题。

总结

  • 出现了连接错误,不仅要检查IP是否正确,还要检查端口是否正确
  • 不仅要检查flask使用的端口是否正确,还要检查是否与docker映射的端口匹配
------ 本文结束------
赞赏此文?求鼓励,求支持!
0%