我对开发很陌生,我使用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)
非常感谢任何有关处理此问题的更有效方法的建议,感谢您花时间阅读!