资讯专栏INFORMATION COLUMN

微信公众号开发推送事件排重

joy968 / 2811人阅读

摘要:问题描述在处理用户领卡的推送的时候,我们的数据库对同一个新的用户,会出现两条数据,比如两条用户,两条用户领卡数据问题分析出现这种的原因在于以下两点服务器有点卡,没有来得及在秒之内回复微信服务器,导致微信服务器重发请求虽然在插入数据之前有所检

问题描述

在处理用户领卡的推送的时候,我们的数据库对同一个新的用户,会出现两条数据,比如两条用户,两条用户领卡数据

问题分析

出现这种的原因在于以下两点:

服务器有点卡,没有来得及在5秒之内回复微信服务器,导致微信服务器重发请求

虽然在插入数据之前有所检查有无重复数据,但是可能服务器很卡,在检查的时候,前一条请求的数据还没有插入数据库

处理方法

参考微信开发文档,利用FromUserName + CreateTime排重,将其作为一个key,存放在memcached里面,然后每次有推送或者消息来得时候,先去判断一下是否存在,如果存在,表示是重复推送,直接return空串,否则表示是第一次推送,将其作为一个key,简要代码如下:

mc = memcached_wrapper.getMemcached()
FromUserName = self.decrypt_msg.find("FromUserName").text
CreateTime = self.decrypt_msg.find("CreateTime").text
mc_key_str = Util.unicode2str(FromUserName + CreateTime)
mc_value_str = mc.get(mc_key_str)
if mc_value_str:
    mc.disconnect_all()
    return ""
else:
    mc.set(mc_key_str, 1, 60)
    mc.disconnect_all()
# 备注
# unicode2str将unicode字符串转化为bytes串
# memcached_wrapper一个处理memcached的py文件,主要作用是连接memcached和复用连接等功能

好了,就先到这里了,记录下来以便下次查阅,如果对于你也有帮助的话,那真是最好不过的了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41367.html

相关文章

  • 【实战教程】使用知晓云完成微信卡券消息的处理

    摘要:此教程将带领大家体验这个新功能,实现一个微信消息推送类型的触发器。进入公众号后台点击开发基本配置服务器配置,同步配置成知晓云消息推送的相关配置,完成配置后,微信消息推送类型的触发器方可使用。 知晓云新推出「消息推送」功能,该功能通过「消息推送」类型的触发器接收微信推送过来的消息,开发者可以对此消息实行相关操作。 此教程将带领大家体验这个新功能,实现一个「微信消息推送」类型的触发器。 该...

    Karrdy 评论0 收藏0
  • 【Node.js 微信公众实战】4.Node.js 微信消息管理

    摘要:消息推送也是微信公众号开发更为有趣的功能,涉及到文本消息图片消息语音消息视频消息音乐消息以及图文消息。在文件中创建文件用于消息的管理。 一、写在前面的话   当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应。   消息推送也是微信公众号开发更为有趣的功能,涉及到文本消息、图片消...

    lewinlee 评论0 收藏0
  • 微信公众第三方开发平台(一)

    摘要:二接收微信调用任何接口都需要这一步也是折腾我最久的,主要推送过来的信息是加密的我们需要将信息解密,解密出将该保存后面需要用到消息加解密接入指引这个页面上可以下载对应语言解密的我选择的是,貌似有点问题,自己改了下可以用了。 最近在做一个公众号的工具,想使用公众号的权限,第一步就是授权,官方的文档说的不是很清楚,对于一个刚接触的开发者看起来是有点吃力的。 一、创建微信第三方应用 showI...

    why_rookie 评论0 收藏0
  • 基于微信公众的多房间实时弹幕消息系统

    摘要:同时借助实现在非接口中推送消息流。每分秒钟最多的弹幕数目弹幕数量过多时优先加载最新的。 项目起始原因 源于数据库课设和以前的一次突发奇想。其实还有其他微信公众号的弹幕系统,但是我发现使用体验不佳,因为那种弹幕系统都是私用,并且只支持同时进行一个房间的使用。所以便萌生了自己写一个的想法。(第一次写md,有点不会,希望谅解--) 主要技术点 Redis(结合socket实现在非socke...

    Anonymous1 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<