Gem clockwork 定时任务,rails 调用系统进程的问题

suxiaohun · 发布于 2017年1月09日 · 最后由 suxiaohun 回复于 2017年1月10日 · 263 次阅读
24267

在做定时任务, ----不让使用crontab 业务要求前台可配置,大概如下面这个意思 我查了一些资料,ruby有很多中方式调用shell指令,ps -ef 也能查到clockwork的进程,逻辑也生效了 但是我对linux的进程不太懂,遇到了以下几个问题: 1.在开发环境,执行shell指令后(包括``,sytem等等),就卡住了 不会跳转,控制台也输出了 此指令的日志。

2.假设能正常运行了,如何结束此任务?通过进程pid 强制杀进程吗?

@huacnlee 我看到你原来的那篇帖子了,最后一句配合god使用,是用来管理这个的吗?

ps:还是说思路有问题,有更好的解决方式?求各位帮忙解答下

共收到 3 条回复
24267

@huacnlee 求帮忙指导下

2099

就那么 100 来行代码,楼主自己研究一下不就行了,看看 clockwork 是怎么实现的。给两点思路:

  1. clockwork 里有一个特定的任务,负责定时从数据库同步最新的任务
  2. 你已经做到了定时任务的结构化,接下来就是如何把数据库里的任务转换成为 clockwork 的任务

关键代码

def tick(t=Time.now)
    to_run = @@events.select do |event|
        event.time?(t)
    end

    to_run.each do |event|
        log "Triggering #{event}"
        event.run(t)
    end

    to_run
end

def clear!
    @@events = []
    @@handler = nil
end

另外随手找了网上别人写的例子(我没细看)

https://gist.github.com/ianneub/6468925

24267

#2楼 @hz_qiuyuanxin 好的 多谢,我去看下源码,突然明白有些地方我想错了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册