我在Heroku上的免费套餐上有一个Rails应用程序,它最近开始吸引一些用户。我的应用中的一个事件涉及查询另一个API,最多可能需要10秒才能完成。如何确保同时访问简单页面的其他用户(作为另一个用户的API事件)不需要等待10秒才能加载其页面?
我需要支付更多的Dynos费用吗?这是可以用delayed_job gem解决的吗?另一台主机(如AppFog或OpenShift)是否能够更快地处理同步请求?
更新: This question建议手动处理线程而不是使用delayed_job。
答案 0 :(得分:1)
这听起来像是一个延迟工作的情况。如果第一个请求只是在等待,那么最有效的方法是分配一个进程来等待它完成并将Rails进程松散以处理另一个请求。
答案 1 :(得分:1)
是的,你需要更多的dynos,speccialy worker dynos那些是在后台工作的人,你可以检查这个有关延迟工作的railscast:
http://railscasts.com/episodes/366-sidekiq
这里还有一个关于向你的免费heroku实例添加独角兽和多个线程的快速教程:
https://devcenter.heroku.com/articles/rails-unicorn
你将你的dyno分成两个或更多个实例,然后每个实例可以处理不同的请求
答案 2 :(得分:0)
您使用的是哪种应用服务器?如果您使用乘客或独角兽,您可以拥有多个可以同时处理请求的工作进程