在 Python 请求模块上强制端口 80 地址源

lim*_*gni 5 python python-requests

我遇到的问题是我所在的服务器无法访问防火墙。我在任务requests中使用模块celery

我需要从另一台服务器获取一组图像。该服务器正在侦听port 8080. 所以,如果我尝试通过这样做来获取图像:

requests.get('http://SERVERIP:8080/blabla/img.jpg', stream=True)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

HTTPConnectionPool(host='SERVERIP', port=8080): Max retries exceeded with url:
/blabla/img.jpg (Caused by <class 'socket.error'>: [Errno 110] Connection timed out)
Run Code Online (Sandbox Code Playgroud)

但如果尝试从其他来源获取图像,例如:

requests.get('http://OTHERSERVERIP/blabla/img.jpg', stream=True)
Run Code Online (Sandbox Code Playgroud)

不是具有图像的服务器的问题,因为我已经从其他服务器尝试过并且它有效。问题(我几乎可以肯定)是 requests 库试图使用 url (8080) 中的端口作为地址源来获取图像。如果远程主机 url 请求中的端口不明确,请对地址源和远程主机使用端口 80,并且一切正常。

关于如何强制库在所有情况下使用 por 80 (在地址源上,意味着传出连接,发出请求的服务器用来侦听的端口)有什么想法吗?

正如 Kroolik 的评论所说: OP 希望将 tcp 套接字绑定到本地主机上的端口 80,并使用该套接字向其他服务器发送 http 请求

编辑

在我读完所有评论后,我想我可能不理解这个问题。最基本的情况是,如果尝试访问侦听端口 80 或 443 以外的任何 URL,我会收到错误,并且我需要连接到侦听端口 8080 的应用程序的 URL。此时我已经解决了更改其他服务器上的一些内容的问题,但我真的很想了解这里的问题是什么!谢谢!