Python中如何先建立连接再发送POST请求?
解决方案:提前建立HTTP连接再发送请求
你说得没错,httplib.HTTPSConnection()只是初始化连接对象,不会立刻建立实际的TCP连接和TLS握手,真正的连接操作是在调用conn.request()时才触发的,这就是为什么实例化步骤耗时极短。
要实现「先建立连接,再发送请求」的逻辑,只需要手动调用连接对象的connect()方法即可:
import http.client as httplib params = my_params() headers = {"Connection": "Keep-Alive"} # 初始化连接对象 conn = httplib.HTTPSConnection("api.domain.com:443") # 手动触发连接建立(TCP握手+TLS协商) conn.connect() # 此时连接已建立,再发送POST请求 conn.request("POST", "/api/service", params, headers) response = conn.getresponse() # 后续如果还有请求,可以直接复用这个已建立的连接 # conn.request("GET", "/api/another-service", headers=headers) # another_response = conn.getresponse()
补充说明
- 如果你需要设置连接超时,可以在实例化时传入
timeout参数,或者在connect()里指定:# 方式1:实例化时设超时 conn = httplib.HTTPSConnection("api.domain.com:443", timeout=10) conn.connect() # 方式2:connect时设超时 conn.connect(timeout=10) - 你添加的
Connection: Keep-Alive头可以让连接在请求完成后保持打开状态,方便后续请求复用,避免重复建立连接的开销。
内容的提问来源于stack exchange,提问作者intrigued_66
相关产品推荐
相关产品推荐

