我想设置rake任务通过cron运行。这很容易,但要确保一次只能运行一次该rake任务的副本,并不容易。我想我可以在系统上使用ps来检查并退出rake任务,如果它已经在运行,或者我可以做一个延迟的作业结构,在这里我序列化任务的名称,并在完成时从数据库中删除它,但是你们都推荐什么?如何确保一次只有一个rake任务正在运行?
0
A
回答
0
Unix用pid文件解决了这个问题。 Pid文件位于/ var/run中,并包含程序进程标识。这里是手册页:http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?pidfile+3
你可能会发现它有点旧(我同意),但它是一个经常使用和验证的方法。
0
您可以使用https://rubygems.org/gems/only_one_rake,像 命名空间:轨做 desc “的在线用户数” only_one_task:online_user_count =>:环境做 循环{OnlineUser.count;睡1} 结束 结束
这看起来很不错,其实!我找不到有关如何有效使用它的好教程,所以我将采用DelayedJob方法检查PID文件并将其用于我的目的。谢谢。 – tesserakt 2010-09-10 19:45:26