我有一个在ruby on rails 3.0.7上开发的书签网站,每次都会运行许多rake文件来获取带有书签的URL详细信息并添加用户信息。由于rake每次都在运行,我的服务器已经投入使用,其CPU利用率为100%。我需要通过将所有rakes保存在数据库中并将其放入队列中来在另一台服务器中运行我的rake文件。
我在一个单独的服务器中设置一个cron来处理rake任务的队列,并共享我的文件。但rake任务仍然从开发服务器运行。
有没有选择在另一台服务器上运行rake文件?或者我如何在rails中设置动态cron作业?
请帮帮我
感谢。
答案 0 :(得分:0)
看起来像是后台工作者的工作。红宝石有很多解决方案。
基本思路是:您将任务提交到队列(由redis / mysql /支持)。然后另一个进程(worker)从队列中弹出任务并在后台执行它们,而不会阻塞或影响您的应用程序。当然,您可以拥有多个工作人员,他们可以位于其他计算机上。
以下是关于工人的轨道广播的集合:Background Job railscasts。
我目前最喜欢的是Sidekiq。