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