关于access_token过期的解决办法

更新时间:2023-07-16 23:25:21 阅读: 评论:0

关于access_token过期的解决办法
最近在做微信的发送模版消息,在测试的时候发现有的时候能够发送,有时候⽆法发送,查了相关的⽇志(⽇志记录发送结果很重要!!),看到了微信返回的错误消息,发现是 invalid credential, access_token is invalid or not latest hint: [QM1DJA0040vr22],原来是asss_token过期了。
我想了问题可能出现在下⾯⼏点:
1. 测试服和线上服使⽤同⼀个app_id和cret来获取,可能会存在其中⼀⽅获取的token是旧的;
effort可数吗
2. 代码中没有统⼀的从⼀个地⽅来获取,⽽是直接从官⽹获取,导致不统⼀(看了代码,没有发现单独获取token的地⽅);
3. 请求获取新的token的时候失败(应该不可能,因为请求成功以后会在redis中缓存两个⼩时,但是发现没过多久⼜再次失效,因此主要
原因应该不是这个);
4. 异步队列等待的时间较长,正好执⾏的时候token已经更新(应该不可能,获取token是在异步函数中执⾏,⽽不是通过函数参数来传
递);
但是实在想不出问题确切的原因,也只能先在其基础上进⾏fix了。
我的做法:是在内层函数中,如果执⾏失败,并且是access_token过期的异常,则会在request的时候抛出专门的异常。在外围函数如果接收到了这个异常,则会抛出让装饰器接收到,装饰器收到这个异常后会删掉缓存中的token,并且重新执⾏该函数,这样该函数在执⾏的时候,就会去主动的获取最新的token。我⼤致写了下代码,如下:
# -*- coding: utf-8 -*-建筑师考试科目
from functools import wraps
from django.utils.decorators import available_attrs
import logging
class WeiXinTokenExpiredException(Exception):
pass
def_delete_weixin_expired_access_token():
"""
删除微信过期的token
"""
pass
guardiandef_nd_weixin_mini_template_msg(msg):小学六年级英语上册
"""
发送微信模版信息
:param msg:
:return:
"""
return {}
def weixin_token_expired_decorator(func):
"""
捕获微信ass_token过期的装饰器
如果抛出WeiXinTokenExpiredException,则删除缓存中的token
并且重新执⾏
:param func: 执⾏函数
"""
def decorator(view_func):
@wraps(view_func, assigned=available_attrs(view_func))
def_wrapped_view(*args, **kwargs):
try:
return view_func(*args, **kwargs)去黄美白
except WeiXinTokenExpiredException:
_delete_weixin_expired_access_token()托福听力mp3下载
return view_func(*args, **kwargs)努力奋斗的英文
return_wrapped_view
if func is None:
会计从业考试成绩return decorator
return decorator(func)
@weixin_token_expired_decorator
def push_weixin_mini_template_msg(msg):
"""
发送模版消息
:param msg:
:return:
railwaystation"""
result = {}
try:
result = _nd_weixin_mini_template_msg(msg)
logging.info("_nd_weixin_mini_result %s", result)
except:
if'error_code'in result and result['error_code'] == 42001:
rai WeiXinTokenExpiredException
return result
吐槽⼀下,微信获取token的场景很多,别弄混了~
>六级425分算过吗

本文发布于:2023-07-16 23:25:21,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/179626.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:获取   发送   微信   时候   可能   发现
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图