我们有类似于下面的代码,在机器和远程主机之间创建一个启用SSL的套接字来传输数据。我们注意到每次调用sock.send时发送的数据量大约是16K。有没有办法配置这个?以16K块发送10 MB数据非常慢,我们可以将块大小配置为大约1-2 MB吗?
from OpenSSL import SSL
import socket
''' Create SSL context.
ctx = ...
''' Create SSL enabled socket.
sock = SSL.Connection(ctx, socket.socket(socket.AF_INET, socket.SOCK_STREAM))
''' Connect to the remote host.
sock.connect((host_address, port))
''' msg is a large string about 10 MB.
msg = ...
''' Send data over the socket.
total_sent = 0
while (total_sent < len(msg)):
sent = sock.send(msg[total_sent:])
total_sent += sent
答案 0 :(得分:3)
send
方法并不保证发送所有字节,但sendall
方法可以。这将避免字符串切片。
答案 1 :(得分:1)
即使可以做到,将块大小从16K增加到1-2MB几乎肯定对性能没有影响。可能的瓶颈是TCP / IP连接的吞吐量(并且以太网网络的MTU可能大约为1500或9000字节,因此无论如何所有内容都会被切割成碎片。)