无论何时,我们都在使用Ruby来管理大量的导入作业。但是,如果下一个cron作业发生时仍在导入文件,怎么办?
例如:
上午12点:每当启动用于import.csv的导入cron作业
凌晨2点: import.csv仍在导入中,但下一个cron作业是在任何时候排定的。
无论何时跳过该文件还是尝试再次运行该文件?有什么建议可以确保它不会尝试两次处理同一个文件?
发布于 2013-11-26 14:48:34
任何时候都只是crontab的前端。每当没有真正启动任何进程时,它都会编写一个crontab来处理实际的调度和启动。无论什么时候你都不能按你的要求去做。
crontab也不能做您想做的事情。它启动了这个过程,就这样。
您需要在cron启动的过程中实现自我检查。一种常见的方法可以是一个锁文件,我相信这里有一些库(即http://rubygems.org/gems/lockfile)。
根据您的情况,您可以在启动导入之前创建其他检查。
发布于 2013-11-26 14:50:46
嗯,这并不是什么时候的问题
但是,您可以在开始处理时重命名要导入的文件(从上午12点到凌晨2点是一段合理的时间),并在完成处理后将其移到存档目录中,这样就不会出现混淆。
下次任务运行时,应该查找与命名模式不匹配的所有文件(正如其中一个注释中所建议的)。
并且您可能需要添加一个额外的任务来检查可能失败的导入(例如,一个文件有一个命名模式,包括确切的时间,但一整天之后它仍然没有存档),或者创建某种通知,或者只是再次触发任务/重命名任务,以便再次捕获它(取决于回滚的工作情况)。
https://stackoverflow.com/questions/20219096
复制相似问题