import time import json import requests import threading from channel.wechatmp.common import * from wechatpy.client import WeChatClient from common.log import logger from config import conf class WechatMPClient(WeChatClient): def __init__(self, appid, secret, access_token=None, session=None, timeout=None, auto_retry=True): super(WechatMPClient, self).__init__( appid, secret, access_token, session, timeout, auto_retry ) self.fetch_access_token_lock = threading.Lock() def fetch_access_token(self): """ 获取 access token 详情请参考 http://mp.weixin.qq.com/wiki/index.php?title=通用接口文档 :return: 返回的 JSON 数据包 """ 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()