【问题标题】:Close session after use使用后关闭会话
【发布时间】:2018-08-20 10:54:39
【问题描述】:

如何关闭在 Python 中创建的会话请求,如 s=requests.session()。我需要在调用每个 API 后清除我的变量。

变量应该被清除,因为我正在尝试使用会话测试 API 的应用程序。

import json
import requests
import time

s=requests.session()

def Auth():
    client_id='client_id'
    client_secret='client_secret'
    username="username"
    password="password"
    postURL = "url"
    postParams = {
            "username" : username,
            "password" : password,
            "scope" : "home",
            "client_id":client_id,
            "client_secret":client_secret,
            "grant_type":"password"}
    s=requests.session()
    postResponse = s.post(postURL, data=postParams).json()
    #print(postResponse)
    accessToken = postResponse["access_token"]
    print(accessToken)
    return accessToken

def Api(accessToken):
    urlp="url"
    headers = {
        'authorization': "Bearer " + accessToken,
        'content-type': "application/json",
        }
    postParams={
        'bbox':'-130.401465,26.977875,-54.463965,54.824098',
        'years': '2017',
    }
    response = s.get(url, data=postParams, headers=headers)
    print(response.status_code)
    print(response.text)
    s.close()
    response = s.get(url, data=postParams, headers=headers)
    print(response.status_code)
    print(response.text)


def main():
    accessToken=Auth()
    Api(accessToken)

if __name__ == '__main__':
    main()

【问题讨论】:

标签: python python-3.x python-requests


【解决方案1】:

我建议使用with 块来打开会话对象:

import requests

with requests.session() as s:
    s.get(url)  # do stuff

或者,您必须以这种方式将'keep_alive' 会话选项设置为False

import requests

s = requests.session()
s.config['keep_alive'] = False

或直接在会话声明中:

import requests

s = requests.session(config={'keep_alive': False})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    相关资源
    最近更新 更多