新手问题 rails mail 怎么可以取消发送

selenium · 2019年06月19日 · 最后由 selenium 回复于 2019年06月20日 · 1000 次阅读

我控制器里面,设置 5 分钟后发送邮件,但是用户如果短时间请求几次,那就会发送几次邮件,我希望用户请求,五分钟后发送邮件,在这五分钟内,如果用户再次请求,那么前一次发送的邮件将会取消,在第二次请求之后五分钟再发送邮件,怎么实现比较好呢

发的时候存了 redis 里,加过期时间,每次发的时候都有判断有没有这个 key,有就不发,没有就发,并刷新 key。 或者利用 rate limit 也能做。

放到 sidekiq 里,延时 5 分钟,存 jid,5 分钟内,再通过 jid 把这个待处理任务删掉。加个发不发字段也行

需要 登录 后方可回复, 如果你还没有账号请 注册新账号