ruby-on-rails – SSE /长轮询连接是否会影响Heroku上的Unicorn
发布时间:2020-12-17 02:05:52 所属栏目:百科 来源:网络整理
导读:我们在Unicorn / Heroku上运行了一个Rails应用程序,Unicorn配置为处理3个并发工作进程. 我们还设置了延迟的作业,以异步处理由客户端请求触发的一些长时间运行的文件处理任务. 我们希望在任务完成时更新客户端.我们可以通过传统轮询来实现这一点,但是正在考虑
我们在Unicorn / Heroku上运行了一个Rails应用程序,Unicorn配置为处理3个并发工作进程.
我们还设置了延迟的作业,以异步处理由客户端请求触发的一些长时间运行的文件处理任务. 我们希望在任务完成时更新客户端.我们可以通过传统轮询来实现这一点,但是正在考虑使用新的EventSource HQ Heroku附加组件,以提高响应速度并减少不必要的HTTP轮询请求的开销. EventSource HQ使用SSE和长轮询的混合来确保跨浏览器兼容性.我想弄清楚的是,如果由EventSource HQ打开的连接在连接的生命周期中绑定了一个Unicorn工作进程?换句话说,如果我通过EventSource HQ连接处理3个并发的长时间运行任务,那么我的web dyno是否无法接收新请求? 解决方法
如果你使用像EventSource这样的东西,那么不会阻止每个连接客户端的Unicorn进程.这是因为它使用的是pub / sub模型.客户端订阅了一个EventSource套接字(您从服务器创建并将套接字ID传递给客户端),只要有事件(如完成作业),服务器就会发布该套接字.
现在,如果你想实现自己的pub / sub API,使用node.js或非阻塞框架(如Goliath)也相当容易 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |