如何跳过正在进行的文件

时间:2013-11-26 13:58:44

标签: ruby cron whenever

我们正在使用Ruby gem来管理大批量的导入作业。但是,如果在下一个cron作业发生时仍然导入文件会怎么样?

例如:

12am:每当启动import.csv的导入cron作业时

凌晨2点:import.csv仍然被导入,但下一个cron作业是在任何时候安排的。

每当跳过该文件或尝试再次运行时?有任何建议,以确保它不会尝试两次处理相同的文件?

2 个答案:

答案 0 :(得分:1)

每当只是crontab的前端时。每当没有实际启动任何进程时,它会编写一个处理实际调度和启动的crontab。无论什么时候不能做你要求的事情。

crontab也无法做到你想要的。它启动了这个过程。

您需要在cron启动的过程中自行实施检查。执行此操作的常用方法可能是锁定文件,并且我确定有这样的库(即http://rubygems.org/gems/lockfile)。

根据您的情况,您可以在启动导入之前创建其他检查。

答案 1 :(得分:1)

嗯,这不是什么时候的问题

但是,您可以在开始处理时重命名要导入的文件(上午12点到凌晨2点是合理的时间)并在完成处理后将其移动到存档目录,这样就不会产生混淆。

下次任务运行时,它应查找与命名模式不匹配的所有文件(如其中一条评论中已建议的那样)

并且您可能想要添加一个额外的任务来检查可能失败的导入(例如,文件具有命名模式,包括确切的时间,但在一整天之后仍然没有存档)并创建某种通知或者只是再次触发任务/重命名任务以便再次拾取任务(取决于您的回滚的工作情况)