sko*_*ozz 5 concurrency ruby-on-rails heroku engineyard
更新:
如果您遇到同样的问题,请先阅读" 指示延迟作业已完成的ajax进程 ".谢谢基因.
我有并发问题.我有一个控制器刮几个网站,但每次调用我的控制器需要大约4-5秒来响应.
因此,如果我连续调用2次(或更多次),则第二次调用需要等待第一次调用才能启动.
那我怎么能在我的控制器中解决这个问题呢?也许像EventMachine这样的东西?
更新和示例:
application_controller.rb
def func1
i=0
while i<=2
puts "func1 at: #{Time.now}"
sleep(2)
i=i+1
end
end
def func2
j=0
while j<=2
puts "func2 at: #{Time.now}"
sleep(1)
j=j+1
end
end
Run Code Online (Sandbox Code Playgroud)
whatever_controller.rb
puts ">>>>>>>> Started At #{Time.now}"
func1()
func2()
puts "End at #{Time.now}"
Run Code Online (Sandbox Code Playgroud)
所以现在我需要从同一个用户/浏览器/等同时多次请求http://myawesome.app/whatever.
我用Unicorn尝试过Heroku(和本地),但没有成功,这是我的设置:
要求:
更多信息: 我现在正在运行2台云服务器.
小智 2
对于任何长响应时间控制器功能,gem是delayed job一个
很好的选择。虽然它经常用于批量邮件发送,但它也适用于任何长时间运行的任务。
您的控制器启动延迟作业并立即响应一个包含占位符(通常是带有进度指示器的图形)的页面,以及 Ajax 或定时重新加载,以在可用时使用完整信息更新页面。关于如何解决这个问题的一些信息可以在这篇 SO 文章中找到。
文章中没有提到的是,您可以使用 redis 或其他一些内存缓存来存储结果,而不是使用主数据库。
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |