首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在任何时候跳过正在进行的文件

如何在任何时候跳过正在进行的文件
EN

Stack Overflow用户
提问于 2013-11-26 13:58:44
回答 2查看 68关注 0票数 0

无论何时,我们都在使用Ruby来管理大量的导入作业。但是,如果下一个cron作业发生时仍在导入文件,怎么办?

例如:

上午12点:每当启动用于import.csv的导入cron作业

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

无论何时跳过该文件还是尝试再次运行该文件?有什么建议可以确保它不会尝试两次处理同一个文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-26 14:48:34

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

crontab也不能做您想做的事情。它启动了这个过程,就这样。

您需要在cron启动的过程中实现自我检查。一种常见的方法可以是一个锁文件,我相信这里有一些库(即http://rubygems.org/gems/lockfile)。

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

票数 1
EN

Stack Overflow用户

发布于 2013-11-26 14:50:46

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

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

下次任务运行时,应该查找与命名模式不匹配的所有文件(正如其中一个注释中所建议的)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20219096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档