【发布时间】:2018-09-28 14:46:18
【问题描述】:
我有一些像这样的会话类
class Session:
def __init__(self,):
self._token_response_dict = self.get_token_details(Session._token_payload, Session._token_headers)
self.token = self._token_response_dict['access_token']
self.token_valid_time = datetime.datetime.now() + datetime.timedelta(
seconds=self._token_response_dict['expires_in'])
self.token_type = self._token_response_dict['token_type']
def is_valid(self):
return True if datetime.datetime.now() < self.token_valid_time else False
@staticmethod
def get_token_details(payload, headers):
r = requests.post('http://webservice/token',
data=payload, headers=headers)
return json.loads(r.json())
在调用某些函数之前,我必须检查会话是否有效。我使用 session 作为全局变量,如下所示。
def get_all_docs(client_id):
global session
if session.is_valid():
headers = {
'content-type': "application/json",
'cache-control': "no-cache",
'postman-token': "aff6cf56-dc63-ae16-762f-4637762733ce",
'authorization': session.token_type + ' ' + session.token
}
payload = {
'LastRefreshTime': datetime.datetime.now().strptime(os.environ['LastRefreshTime'], '%d-%m-%Y %H:%M:%S'),
'ClientID': client_id
}
r = requests.get(Details.get_docs_url, params=payload, headers=headers)
return json.loads(r.json())
else:
session = Session()
get_all_docs(client_id)
如何使用 python 装饰器执行此验证?
【问题讨论】:
-
你试过了吗?你能告诉我们一些努力吗?
-
我对装饰器的实现有非常基本的了解。我试过了,但没有得到想要的结果
-
请展示您的尝试并说出您遇到的问题...
标签: python python-3.x design-patterns python-decorators