| import threading |
| import time |
|
|
| from wechatpy.enterprise import WeChatClient |
|
|
|
|
| class WechatComAppClient(WeChatClient): |
| def __init__(self, corp_id, secret, access_token=None, session=None, timeout=None, auto_retry=True): |
| super(WechatComAppClient, self).__init__(corp_id, secret, access_token, session, timeout, auto_retry) |
| self.fetch_access_token_lock = threading.Lock() |
|
|
| def fetch_access_token(self): |
| with self.fetch_access_token_lock: |
| access_token = self.session.get(self.access_token_key) |
| if access_token: |
| if not self.expires_at: |
| return access_token |
| timestamp = time.time() |
| if self.expires_at - timestamp > 60: |
| return access_token |
| return super().fetch_access_token() |
|
|