【问题标题】:whenever gem minutely job. If minutely job takes more than one minute then what每当宝石分钟工作。如果分钟的工作需要超过一分钟,那么什么
【发布时间】:2010-12-11 19:08:19
【问题描述】:

我计划使用whenever gem,除其他外,它还将运行每分钟的 rake 任务。如果我的 rake 任务花费了超过一分钟,那么根据 gem 的输出,即使第一个还没有完成,第二个 rake 任务似乎也会启动。

每当 gem 会等待 miutely 任务完成后再开始第二个任务?

如果不是,那么解决方法是什么。我相信这个问题在 serverfault 中得到更好的解决,我还是把它放在这里。

【问题讨论】:

    标签: ruby rubygems cron


    【解决方案1】:

    只要只编写 cronjobs,并且不努力阻止它们超载自己。这是正在运行的任务的作业。

    使用 PID 文件或文件系统锁来防止任务超出其自身运行。

    【讨论】:

      【解决方案2】:

      在我计划的应用程序中,我扫描进程列表以在命令行上查找使用相同配置文件运行的应用程序的其他实例 - 如果进程已经使用相同的配置文件运行,则退出并记录注释。

      这样可以防止程序自己踩到自己...

      当进程退出但锁定文件仍然存在时,PID文件或某种类型的“锁定”文件容易出现问题。

      【讨论】:

      • 锁定文件和文件锁定(apidock.com/ruby/File/flock)是有区别的。
      • 是的,但这不会改变逻辑缺陷——您仍在通过检查文件是否被锁定来测试进程是否“间接”运行。我通过扫描进程列表来“直接”检查,包括命令行参数——它更简单、更灵活。
      猜你喜欢
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      相关资源
      最近更新 更多