我有一个 Python 脚本,它使用以下命令创建许多短暂的并发连接requests图书馆。我特别需要找出每个连接使用的源端口,并且我认为我需要为此访问底层套接字。有没有办法通过响应对象来获取它?
对于流连接(使用stream=True
参数),您可以调用.raw.fileno()
响应对象上的方法来获取打开的文件描述符。
您可以使用socket.fromfd(...)
从描述符创建 Python 套接字对象的方法:
>>> import requests
>>> import socket
>>> r = requests.get('http://google.com/', stream=True)
>>> s = socket.fromfd(r.raw.fileno(), socket.AF_INET, socket.SOCK_STREAM)
>>> s.getpeername()
('74.125.226.49', 80)
>>> s.getsockname()
('192.168.1.60', 41323)
对于非流式套接字,在返回响应对象之前会清理文件描述符。据我所知,在这种情况下没有办法得到它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)