我在使用Heroku的rails应用程序上有一个ruby。我需要在我们的数据库上运行像导入/导出任务这样的东西来锁定整个系统,因为它们在数据库上非常繁重。有没有办法告诉系统只在第二次使用数据库时才运行这些任务?
答案 0 :(得分:1)
没有内置方法来安排这样的工作。但是,你可以做一些事情。
安排作业在一天中最忙碌的时段运行。这将取决于您的业务,客户群等,但希望有一个窗口比其他窗口更合适。
您可以编写批处理作业以运行较长时间,从事小型工作。在每个工作单元之间,睡几秒钟,或者查看当前的平均负载并根据它确定要做什么。这应该可以降低批处理作业的影响。
让网站在某个地方更新“锁定”,无论是在数据库中还是在memcached中。如果您的正常网站使用情况更新了数据库,您可以查看现有的updated_at
。然后只在一段时间没有任何活动时进行批量工作。当然,这并不能保证新用户不会在批处理作业运行的同时弹出,但可以找到一个不太常用的窗口。
答案 1 :(得分:0)