- 采用绑定gitee代码仓库方式部署python flask服务总是失败?
环境id:prod-2gdt5yntac670964;服务名称:ai-server;版本:ai-server-002;状态:部署失败 Dockerfile内容如下: FROM tiangolo/uwsgi-nginx-flask:python3.8 FROM python:3.8-slim COPY ./app /app/ COPY ./requirements.txt ./
2022-03-19 - 「笔记」订阅消息-订阅次数维护
前言 距离1月10日模板消息下架只有2天了,在社区里经常能看到有帖子在问关于怎么记录订阅次数的问题,这里在这里介绍一下自己用的简单方案,仅供参考。 误区一 [图片] 上面这个图大家应该都比较熟悉了,很多人总是误以为勾选“总是保持以上选择,不再询问”,就可以无限发送订阅消息,这个是错误的想法,勾选和不勾选唯一的区别就是每次触发订阅的时候会不会弹授权窗口而已。 误区二 订阅消息不能通过bindsubmit的方式触发,必须通过bindtap的方式触发。 误区三 触发订阅窗口后,不管用户点击了允许还是取消,都会进入订阅消息的success回调中,所以通过这个来判断用户是否订阅是错误的。 订阅次数的维护 先看下官方的文档: [图片] 那么我们该如何使用呢? 我们通过 wx.requestSubscribeMessage 接口发送的时候是知道需要让用户订阅哪几个模板的,就是 tmplIds 这个参数填的数组。那么根据官方文档的回调内容,我们就可以直接在success内去获取对应的key所返回的状态。把获取到的状态分别存入自己的数据库里。发送的时候去数据库里查询需要发送的模板并且状态为accept的去发送,如果发送成功则删除一条记录(因为没有过期一说,所以随便删除哪一条记录都不影响)。 参考代码 [图片] 查询模板订阅状态 需要基础库大等于2.10.0才支持。 wx.getSetting({ withSubscriptions: true, success (res) { console.log(res) } }) 官方文档 补充 如果用户选择了不再接收消息会清空之前的订阅次数,但是这个不会主动告诉开发者,所以发送订阅消息失败后,需要根据返回内容自行清空记录,重新计算。 相关文章 「笔记」订阅消息-订阅次数维护(2020年3月更新改动) 「笔记」订阅消息体验踩坑
2020-03-06 - 云函数 subscribeMessage.send 报错 errCode: -1
{"errCode":-1,"errMsg":"system error: error code: -1"} 云函数发送订阅消息,清一色报 -1?什么问题 Request ID: 00a61e77-1a5c-11eb-9e5c-5254008c2339 [图片]
2020-10-30 - subscribeMessage.send errCode: -504002报错?
[图片]Error: cloud.callFunction:fail Error: errCode: -504002 functions execute fail | errMsg: TypeError: Do not know how to serialize a BigInt 调用订阅消息后测试消息可以发送成功,但是返回值报错Do not know how to serialize a BigInt,无法判断是否发送成功。 2022-05-01 解决方法:云函数的返回值不要返回result,直接返回result.errCode,就不会报错。原因是直接返回result被序列化导致报错(其实就是bug),所以返回result.errCode足以用于判断!
2022-05-01 - 如何解决在云函数中调用subscribeMessage.send出错问题?
在用云函数定时触发器开发消息订阅功能时,遇到一个问题。 环境:基础版本库2.17.0 在定时器函数中,调用另外一个云函数,该云函数中调用了cloud.openapi.subscribeMessage.send。在云函数日志端显示函数调用失败,但是在微信里可以收到一条订阅消息。二其它的订阅消息就无法收到。日志显示异常信息如下: exception occured { "errCode": -504002, "errMsg": "callFunction:fail -504002 functions execute fail. requestID t_1647352800638_12041-17f8de0ebd5_2, TypeError: Do not know how to serialize a BigInt\n at JSON.stringify (<anonymous>)\n at callback (/var/runtime/node12/CallbackContext.js:31:23)\n at /var/runtime/node12/CallbackContext.js:81:16\n at /var/runtime/node12/Runtime.engine.js:237:13\n at processTicksAndRejections (internal/process/task_queues.js:97:5)" 出现问题的云函数代码如下: const cloud = require('wx-server-sdk') cloud.init({ env:cloud.DYNAMIC_CURRENT_ENV }); const GOOD_GIFTS = [ { "type":"每周好物推荐", "title":"适合送给亲人和朋友的德尔玛加湿器", "notify":"每周五晚19:00准时更新", "date":"2022-03-25", // "abstract":"德尔玛加湿器" "abstract":"比京东同款便宜约20%~30%" } ]; /* the procedure: 1.get all the subscriber's openid 2.send the notify message to every subscriber */ exports.main = async (event, context) => { // get openid const allOpenid = await cloud.callFunction({ name:"getAllOpenid", }); if( allOpenid == null ) return; // get all the subscribers's openid array candidateSets = allOpenid.result.data; console.log("candidateSets = ",candidateSets); for( let i = 0; i < candidateSets.length; i++){ console.log("sending the subscribe messege to the user:",candidateSets[i]._openid); for(let j = 0; j < GOOD_GIFTS.length; j++){ try{ // send the subsribe message res = await cloud.callFunction({ // the cloud function name name:"subscribeGift", // the parameter:open id, then cloud function will use event.openid to get the parameter data:{ openid : candidateSets[i]._openid, type : GOOD_GIFTS[j].type, title : GOOD_GIFTS[j].title, notify : GOOD_GIFTS[j].notify, date : GOOD_GIFTS[j].date, abstract : GOOD_GIFTS[j].abstract } }); }catch(err){ console.log("exception occured",err); }finally{ console.log("sended the subscribe messege to the user:",candidateSets[i]._openid); console.log("subscribeGift call result is:",res); } } //end of inner for loop }//end of outer for loop if( res ) return true; else return false; } }
2022-03-15