是用 crontab 吗?
用 rake 任务 + crontab
,使用 whenever
管理部署。
需要注意的是,处理逻辑不要全堆在 rake 文件里,而是放在 model 或者 service 中,rake 只作为调度控制,这样容易写测试。然后是日志和异常监控,日志最好打到单独文件,不要和 web 日志混在一块,异常监控可以用第三方服务或自建 errbit。
如果执行周期很频繁,比如每分钟执行一次,可以用 sidekiq-cron,这样能避免频繁加载 rails 环境,提升效率。如果周期很长,我觉得还是用 crontab 比较好,干净独立,依赖少,不会有干扰。
固定周期的用 crontab。如果”周期性“涉及到可编程逻辑(比如按不同 company 的本地时区来周期性计算)我还是用 background job 去处理。如果必须要用 Sidekiq 做周期性任务的话,sidetiq (不是 sidekiq) 这个 gem 可以看看。
个人不推荐把重要的周期性任务放到 crontab 里面,当有逻辑变更(周期性也变更)的时候因为非常容易忽略。还是用 sidekiq-cron gem 把周期性任务和整个项目结合在一起更整体一点