Rails Rails 4 后台作业问题

ren_jiaxing · 2014年06月28日 · 最后由 nathaninmac 回复于 2014年06月30日 · 2442 次阅读

小弟刚接触 rails 有个小小的需求,就是当 rails 启动后,后台每隔 10s 自动运行一个程序,当 rails 关闭后,这个后台程序自动结束运行。我看了一下 wiki,觉得 whenever 可以做,但是如何判断 rails 启动和关闭呢,rails 中有对应的程序对应么?请各位大拿指点,谢谢~

well... 假设你用的是 unicorn 吧,cron 里面 每 10 秒用 ps aux | grep '[u]nicorn' 判定,有返回就运行程序,没返回就啥也不干。

提供两个不负责任的方案:

  1. 找一个无需单独开进程跑且支持指定延时执行任务的后台库(如 Sucker Punch),写一个要每隔 10s 运行的 job,在这个 job 运行的最前面再延时运行一份同样的 job。

  2. Rails 应用中做一个简单的 controller/action,返回 render text: 'up' 之类的。开一个每个十秒的 cron,先访问该 controller/action,返回 status 是 200 则执行。

#1 楼 @blacktulip 谢谢~ 如果在 windows 平台怎么搞啊?其实我想做一个系统参数监控 每个 10s telnet 到系统上收集一下数据 rails 下面有没有函数在开启和结束 rails 调用啊?

#2 楼 @ashchan 感谢大拿 我有个想法 不知道 ruby 有木有 time 函数 每个 10s 钟运行一下 然后放到后台来进行运行 方案 2 可以试试看 谢谢~

#3 楼 @ren_jiaxing windows 装虚拟机搞

#4 楼 @ren_jiaxing 看到你用 Windwos 当服务器,我实在是不得不说,你的需求太高端了!

但是我还是想告诉你,Windows 上也有任务管理,只是用的人少了点么!

比较简单的任务的话,在启动时在 /config/initializers 里面写一个死循环每次 sleep 你要的间隔的任务就好了

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