mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-02-06 07:52:24 +08:00
22 lines
893 B
Python
22 lines
893 B
Python
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): # 重载父类方法,加锁避免多线程重复获取access_token
|
||
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()
|