如何确保一次只运行一个rake任务?

时间:2010-09-10 19:18:01

标签: rake process-management simultaneous

我想设置rake任务以通过cron运行。这很容易,但不容易的是确保一次只运行该rake任务的一个副本。我想我可以在系统上使用ps来检查然后退出rake任务(如果它已经在运行),或者我可以做一个延迟的作业结构,我在序列化任务的名称,并在完成后从数据库中删除它,但是你们都推荐什么?

2 个答案:

答案 0 :(得分:0)

Unix用pid文件解决了这个问题。 Pid文件位于/ var / run中,包含程序进程Id。以下是手册页:http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?pidfile+3

你可能会发现它有点老式(我同意),但它是一种经常使用且经过验证的方法。

答案 1 :(得分:0)

您可以使用https://rubygems.org/gems/only_one_rake namespace:rails do     desc“在线用户数”     only_one_task:online_user_count => :环境呢       loop {OnlineUser.count;睡觉1}     结束   端