最近写了图片相关的应用放在 SAE 上,应用的逻辑简单的说就是生成满足用户特定要求的图片,然后直接以图片消息的形式发送给用户微信。我的应用中,首次生成图片后会同时依据图片的特征参数生成一个唯一的 KEY ,与调用上传永久素材接口后得到的 mediaid 组成一个键值对存入数据库,如果上传永久素材出错,则尝试调用上传临时素材的接口得到一个有效期较短的 mediaid (文档说是 3 天),最后利用获得的 mediaid 和用户 openid 把图片用客服消息接口发给用户,定期清理数据库和微信永久素材库,保留最新的调用频次高的图片。
前两天用的都很正常,昨晚发现上传素材时老是报错,没太在意,今天早上我试了下又好了,就以为是服务器的问题。今天下午又出错,查了下发现错误代码是: 41005,media data missing,又单独测试了上传临时素材接口发现没问题,接着测上传永久素材接口,报错: 45009,reach max api daily limit ,超过了每日上限,问题来了, 1.我微信端虽然暂时使用的是测试号,常见的接口都每日调用的上限好像更少,但我根本没调用多少次,我查了下测试号个人页面的介绍,调用上传永久素材接口的每日上限为 1000 ,临时素材为 5000 ,但我显然没有调用这么多次数,查了 sae 上的日志,今天一天应用访问次数也就 1 百多次,微信永久素材库上传的图片也就 40 张,就超过调用上限了。。。实在想不通,咨询客服也无果。 2.我上传临时素材的接口单独测试没有问题,为啥代码里如果在上传永久素材失败后,紧接着调用上传临时素材接口也会报错? 我现在只能临时把上传永久素材的代码全部去掉,全部使用临时接口,目前工作正常。还请各位有微信公众平台开发经验的朋友指点迷津,多谢!
以下用 python 代码片段简要的描述下:
(mediaid,errmsg) = wx.add_material(io) #45009 reach max api daily limit
if mediaid:
value = "%s %s" %(mediaid,str(int(time.time())))
kv.set(k,value)
return (mediaid,errmsg)
(mediaid,errmsg) = wx.upload_img(io) #41005,media data missing ,去掉上面的 add_material 则正常
return (mediaid,errmsg)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.