不同帐户的多个API请求,如何正确关闭每个请求?

时间:2015-09-23 22:21:00

标签: python http python-requests

我正在尝试为同一个网站拨打多个电话以获取单独的帐户。第二次呼叫时,第一次呼叫的信息似乎仍然存储或“在路上”。具体来说,第二个请求的r1吐出的错误中提到了来自第一个帐户的pub ID,这个ID不是预期的ID。这是我的代码发出请求,我尝试添加s.close()但问题仍然存在:

def data(account, report, st, et):     
    url_post = "https://publisher-api.website.com/1.0/Publisher/Login?"
    payload = {'username':account.username,'password':account.password}
    url_get = report.url+"?date_range="+st+"|"+et+""

    with requests.Session() as s:
        r1 = s.post(url_post,data=payload)
        r2 = s.get(url_get)
    s.close()

    data = r2.json()
    df = pd.DataFrame.from_dict(data['value']['data'])
    return df

以下是进行多次调用的代码:

def rev_all():

    spx_st = spotx_date(grab_date('Start Date: '))
    spx_et = spotx_date(grab_date('End Date: '))

    SP1_Rev = data(SP1, Revenue, spx_st, spx_et)
    SP2_Rev = data(SP2, Revenue, spx_st, spx_et)
    SP3_Rev = data(SP3, Revenue, spx_st, spx_et)
    SP7_Rev = data(SP7, Revenue, spx_st, spx_et)
    SP8_Rev = data(SP8, Revenue, spx_st, spx_et)

    Rev = [SP1_Rev, SP2_Rev, SP3_Rev, SP7_Rev, SP8_Rev]
    df = pd.concat(Rev,ignore_index=True)

    return df

1 个答案:

答案 0 :(得分:0)

我相信你也应该在每个会话中进行注销。我认为问题是前一个会话在服务器端仍处于活动状态,因为您执行了登录但未注销。