【发布时间】:2017-02-15 21:51:10
【问题描述】:
我有一个需要在后台(Rails 5.0.1)按以下顺序执行的任务列表-
- 下载 zip 文件
- 从中提取 xml 文件(平均大小 ~ 400 MB)
- 解析(Nokogiri XML::reader) xml 文件以查找满足某些约束的记录,如果找到,将它们添加到数据库 (postgres)
- 从数据库中检索一些电子邮件地址并向他们发送电子邮件
这需要每天都在没有任何人工输入的情况下完成。现在,我正在使用 Rails runner 来完成所有这些工作,并使用 cron ('Whenever' gem) 来安排它。那么,使用“runner”是正确的方法吗?鉴于前端(管理面板)不会被太多访问,我可以使用 内存密集型 方法吗?活跃的工作、rake、守护进程等怎么样?
【问题讨论】:
-
无论您如何安排作业,解析 XML 都将成为瓶颈。如果您想要一种内存占用较少的方法,请尝试找到不涉及将 400mb XML 文件解析到内存中的方法。
-
@max 我目前正在使用 Nokogiri xml 阅读器,它不会将 xml 加载到内存中,而是按顺序读取行,解析节点。有更好的解决方案吗?也许拆分 xml 文件?
标签: ruby-on-rails ruby xml postgresql background-process