Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x HTTP和TCP保持活动状态?_Python 3.x_Sockets_Http_Tcp_Python Asyncio - Fatal编程技术网

Python 3.x HTTP和TCP保持活动状态?

Python 3.x HTTP和TCP保持活动状态?,python-3.x,sockets,http,tcp,python-asyncio,Python 3.x,Sockets,Http,Tcp,Python Asyncio,我正在用(asyncio)Python编写一个HTTP/1.1客户端,想知道是否应该使用SO_KEEPALIVE选项创建套接字 导入套接字 sock=socket.socket(family=socket.AF\u INET,type=socket.sock\u STREAM,proto=socket.IPPROTO\u TCP) sock.setsockopt(socket.SOL_socket,socket.SO_KEEPALIVE,1) 它应该始终启用还是禁用?在某些情况下,启用或不启用

我正在用(asyncio)Python编写一个HTTP/1.1客户端,想知道是否应该使用
SO_KEEPALIVE
选项创建套接字

导入套接字
sock=socket.socket(family=socket.AF\u INET,type=socket.sock\u STREAM,proto=socket.IPPROTO\u TCP)
sock.setsockopt(socket.SOL_socket,socket.SO_KEEPALIVE,1)
它应该始终启用还是禁用?在某些情况下,启用或不启用它是否更好?是否需要进行权衡?如果是HTTPS,答案会不同吗


我特别考虑的是用于多个HTTP请求的连接(即使用HTTP保持活动)。

TCP保持活动用于检测TCP连接的连接丢失,该连接在较长时间内处于空闲状态(即没有数据传输)。HTTP/1通常不适合这个用例,因此让TCP保持活动状态没有多大意义。但它也没有害处。事实上,电线上显示的内容可能根本没有区别


在HTTP/1中,客户机发送一个请求,之后或多或少会立即收到服务器的响应。如果HTTP keep alive处于活动状态,则可能会出现另一个请求,从而再次导致响应。这些请求之间的持续时间通常很短,也就是说,长时间保持空闲连接是不常见的。客户机和服务器在请求响应完成后的任何时候都可以关闭连接,并且它们还必须能够处理来自对等方的此类连接关闭。因此,在TCP保持活动计时器触发空保持活动数据包的传递之前,连接很可能已关闭或传输了新数据。

TCP保持活动用于检测空闲(即无数据传输)时间较长的TCP连接的连接丢失。HTTP/1通常不适合这个用例,因此让TCP保持活动状态没有多大意义。但它也没有害处。事实上,电线上显示的内容可能根本没有区别

在HTTP/1中,客户机发送一个请求,之后或多或少会立即收到服务器的响应。如果HTTP keep alive处于活动状态,则可能会出现另一个请求,从而再次导致响应。这些请求之间的持续时间通常很短,也就是说,长时间保持空闲连接是不常见的。客户机和服务器在请求响应完成后的任何时候都可以关闭连接,并且它们还必须能够处理来自对等方的此类连接关闭。因此,在TCP保持活动计时器触发空保持活动数据包的传递之前,连接很可能已关闭或传输了新数据