我在Rails 4中开发应用程序并且不确定如何实现某个功能:基本上我需要实现某种类型的cron作业。例如,我们说我在我的应用中创建了发票。我需要该应用程序检查发票到期日期,并向客户发送提醒尚未支付发票的提醒。我想在没有用户输入的情况下实现这一点。
我怎样才能做到这一点?
我一直在考虑这个问题,并考虑过使用像whenever这样经常检查数据库的工具。
但还有另一种方法吗?更高效的东西?
由于
编辑:我试图避免效率低下:
我设想的方法可行:
我担心的是,如果有数千张发票,检查所有条目并检查它们是否在特定时间范围内可能需要大量资源。那么,有更好的解决方案吗?
答案 0 :(得分:0)
作为cron的替代品,你可以将这个宝石用于延迟工作:
https://github.com/amitree/delayed_job_recurring
Sidekiq也有定期工作(虽然它只出现在sidekiq pro中):
答案 1 :(得分:0)
如果您在Heroku上部署,则可以使用Heroku scheduler。我已将它用于各种任务,如备份,分析,计数等。
对于rails应用程序,您可以创建rake任务以运行特定命令,然后使用调度程序定期运行rake任务。
答案 2 :(得分:0)
我将作业定义为正常的控制器操作,并为其设置了路由。
使用render json: @records
返回更新记录的列表。
(另外,我必须通过更改application_controller.rb中的before过滤器来避免通常需要的登录)。
我无法在浏览器中对其进行测试。
我尝试了wget
(或curl)查询到定义的路由
并将其放置在用户crontab(crontab -e
)
之所以选择此解决方案,是因为我不想使用其他gems或启动RailsRunner任务,因为它启动时很慢,而且会占用大量内存。