Daemon vs Runner vs Rake Tasks vs Active Job

时间:2017-02-15 21:51:10

标签: ruby-on-rails ruby xml postgresql background-process

我有一个需要在后台执行的任务列表(Rails 5.0.1),按以下顺序 -

  1. 下载zip文件
  2. 从中提取xml文件(平均大小~400 MB)
  3. Parse(Nokogiri XML :: reader)xml文件,用于满足特定约束的记录,如果找到,则将它们添加到数据库(postgres)
  4. 从数据库中检索一些电子邮件地址并向其发送电子邮件
  5. 这需要在没有任何人为输入的情况下每天完成。现在,我正在使用Rails运行器来完成所有这些并使用cron('Whenever'gem)安排它。那么,使用“跑步者正确方法?是否存在内存密集度较低方法,我可以使用,因为前端(管理面板)不会被访问太多?活跃的工作,耙子,守护进程等怎么样?

1 个答案:

答案 0 :(得分:1)

。 rake任务只是命名空间内的一堆代码,通过rake管理工具

执行

runner在非交互式的Rails环境中运行Ruby代码

。另一方面,守护进程与这两个完全不同,你可以在这里查看更多相关内容:http://daemons.rubyforge.org/

对于你的情况,最好使用rake,因为它不会启动rails“除非你做”(跑步者必须启动rails)。

另一件事是rake是单线程的,所以如果你想要有效地完成一项任务你可以使用rake,如果你有多个任务你可以使用工人和工具,如Sidekiq,Resque和Delayed jobs