|
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() |
|
|