You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

每次发送请求时销毁/创建新会话?Python requests模块求助

解决Requests会话创建与销毁的问题

嘿,刚接触Python和requests模块遇到这种小问题太正常了,我来帮你理清楚怎么正确管理会话,顺便解决你的缩进错误~

首先,先搞清楚requests里会话的两种正确使用方式:

方式1:显式创建Session并手动关闭

你之前尝试加session.close()出现缩进错误,大概率是把它放错了代码块的层级。比如你得确保close()和会话创建、请求发送的代码处于同一缩进级别,或者在请求处理完成的代码块内。

举个正确的例子:

import requests

def send_post_request():
    # 创建新会话
    session = requests.Session()
    try:
        # 发送POST请求
        response = session.post('https://example.com/api', data={'key': 'value'})
        # 处理响应
        print(response.status_code)
        print(response.json())
    finally:
        # 不管请求成功失败,都关闭会话
        session.close()

# 调用函数
send_post_request()

这里用try...finally能保证即使请求过程中出错,会话也能被正确关闭,避免资源泄漏。如果你的session.close()之前缩进错了(比如缩进在response.json()那一行的层级),就会报错,调整到和session = requests.Session()同层级的代码块里就好。

方式2:用上下文管理器(推荐!)

其实requests的Session对象支持上下文管理器,用with语句的话,不需要手动调用session.close(),代码块结束后会自动销毁会话,更简洁也更安全:

import requests

def send_post_request():
    # 用with创建会话,自动管理生命周期
    with requests.Session() as session:
        response = session.post('https://example.com/api', data={'key': 'value'})
        # 处理响应
        print(response.status_code)
        print(response.json())
    # 这里不需要写session.close(),with块结束后自动关闭

send_post_request()

这种方式完全不用操心关闭的问题,还能避免因为忘记关闭或者缩进错误导致的问题,特别适合新手使用。

总结一下:如果手动调用close(),一定要注意缩进层级,把它放在会话使用完成后的同一缩进级别;更推荐用with语句来创建会话,自动处理销毁,省心又不容易出错~

内容的提问来源于stack exchange,提问作者Tyler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:02:37