开源项目 [初学者] crontab on rails, 使用 rails 给 linux crontab 包了一层 web GUI

markluo · 2017年02月09日 · 最后由 akin520 回复于 2017年02月10日 · 4869 次阅读

个人兴趣初学 rails,希望得到一些批评和建议 https://github.com/genghuiluo/webcron

  1. 使用帐号隔离不同的 job protype
  2. rake task 来 call 具体的 job 的脚本
> crontab -l
...
PATH=$PATH:/usr/bin/:/usr/local/bin

14 18 7 * * cd /webcron && /usr/local/bin/rake RAILS_ENV=development webcron:excutejob[1] >>/tmp/webcron.development.log 2>&1
14 18 * * 2 cd /webcron && /usr/local/bin/rake RAILS_ENV=development webcron:excutejob[2] >>/tmp/webcron.development.log 2>&1

安装成本太高,都把你这个装好了,还不如自己配置了

所以,为了方便,应该尝试像 pghero 那样做成 Rails Engine 的模式,可以直接挂在其他的 Rails 项目上面

  1. crontab 手写不难,whenever 可以减少重复代码,但不是必须,web 更没必要。
  2. 如果只是需要载入 rails 环境并执行脚本,rails runner 比 task 合适。
  3. 如果需要经常修改运行时间,提供 web 界面,推荐 clock process 模式,例如 sidekiq-cron。

#1 楼 @huacnlee 安装确实是个问题,很好的建议,会继续尝试 rails engine 的模式,谢谢

#2 楼 @Rei 2&3,不错的建议,会继续学习,谢谢

对于 1,确实 crontab 手写不难,但是如果当你面对以下问题的时候如何解决?

A 假设你有上百个 crontab job,

  1. 如何看到所有 job 的现在的状态?success/failed/running
  2. 最近结束的 job? 下一个开始的 job?
  3. 发现很多失败的 job 时,怎么不用一个一个查看日志文件就可以看到所有的 log?

B 你开发了一个有用的 script,非程序员的同事不知道怎么通过 cmd 调用这个 script? 那可以提供一个表单让他自己来 schedule 吗?

#3 楼 @markluo 复杂情况用 clock process,更好的调度和扩展,不用 crontab。

赞一个,一直想用 python 写,没完成

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