请求会话到期时处理的优雅方式

时间:2015-10-29 08:49:22

标签: python session

我对开发很陌生,我使用python与许多不同的API进行交互,通常是通过请求模块。所有API都需要登录调用,该调用返回用于以下调用的会话密钥。 Psudo-示例:

req = session.post(https://someloginurl.com, data, headers)    
print req.content

sessionid=12345

有些API会让我的会话任意到期,可能是4分钟,也许是15,可能不适用于整个脚本。所有人的反应都不同:

req = session.get(url)
print req.content

{result : failed, 'your session has expired'}

或者也许:

req = session.get(url)
print req.content

<xml><result>your session has expired</result</xml>

我似乎无法检查我的会话是否已经过期,直到我收到请求失败后,我想重新登录并再次运行请求。

对于我提出的每一个请求,是否有比以下更好的方法?

def success(content):
    if "success" in content:
     return "success"
    else:
        return

session = login()
while True:   
    req = session.get(url)
    if success(req.content):
        break
    else:
        session = login()

或者我是否将请求作为一个函数并将其传递给params?

def success(content):
    if "success" in content:
     return "success"
    else:
        return

def do_request(url, *args) 

    while True:
        if method is "post":
            req = session.post(url, data, headers)
        else:
            req = session.get(url)
        if success(req.content):
            return req.content, session
        else:
            session = login()

session = login()    
results, session = do request(url, "post", data, headers, session)
results, session = do request(url, "get", session)  

非常感谢任何有关处理此问题的更有效方法的建议,感谢您花时间阅读!

0 个答案:

没有答案