使用 ActiveJob,后端接 sidekiq,还要安装使用 redis,这个我之前试过,可以异步执行,应该是一种解决办法。
准确的说是计时器在 0 到 30 秒计时的过程中,任意时间,都可能会接收到一个消息,如果计时器接收到这个消息,便把现在的时间重置为 0,重新开始计时。循环直到时间到达 30 秒时,执行指定函数退出。