我遇到的问题是我在服务器中无法访问防火墙。我在requests
任务中使用celery
模块。
我需要从另一台服务器获取一组图像。此服务器正在侦听port 8080
。所以,如果我试图通过这样做来获得图像:
requests.get('http://SERVERIP:8080/blabla/img.jpg', stream=True)
我收到此错误:
HTTPConnectionPool(host='SERVERIP', port=8080): Max retries exceeded with url:
/blabla/img.jpg (Caused by <class 'socket.error'>: [Errno 110] Connection timed out)
但如果尝试从其他来源获取图像,例如:
requests.get('http://OTHERSERVERIP/blabla/img.jpg', stream=True)
具有映像的服务器不是问题,因为我已尝试从其他服务器运行。问题(我几乎可以肯定)是,请求库试图使用url(8080)中的端口作为地址源来获取图像。如果端口在远程主机中没有显式请求,请将端口80用于地址源和远程主机,一切正常。
关于如何强制库在所有情况下使用por 80的任何想法(在地址源上,意味着传出连接,使请求用来监听的服务器的端口)?
正如Kroolik的评论所说:OP希望将tcp套接字绑定到localhost上的端口80,并使用该套接字将http请求发送到其他服务器
编辑
在我读过的所有评论之后,我想我可能不理解这个问题。最基本的情况是,如果尝试访问正在侦听不同于80或443的端口的任何URL,我会收到错误,我需要连接到正在侦听端口8080的应用程序的URL。此时我已经解决了改变其他服务器上的一些东西的问题,但我真的想了解这里的问题是什么!谢谢!