Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails SSE/long轮询连接是否会占用Heroku上的Unicorn进程?_Ruby On Rails_Heroku_Long Polling_Server Sent Events - Fatal编程技术网

Ruby on rails SSE/long轮询连接是否会占用Heroku上的Unicorn进程?

Ruby on rails SSE/long轮询连接是否会占用Heroku上的Unicorn进程?,ruby-on-rails,heroku,long-polling,server-sent-events,Ruby On Rails,Heroku,Long Polling,Server Sent Events,我们在Unicorn/Heroku上运行了一个Rails应用程序,Unicorn配置为处理3个并发工作进程 我们还设置了延迟作业,以异步处理由客户端请求触发的一些长时间运行的文件处理任务 我们希望在任务完成时更新客户端。我们可以通过传统的轮询来实现这一点,但是我们正在研究使用新的Heroku插件,以提高响应能力并减少不必要的HTTP轮询请求的开销 EventSource HQ混合使用SSE和长轮询来确保跨浏览器兼容性。我想弄清楚的是,EventSource HQ打开的连接是否在连接的生命周期内绑

我们在Unicorn/Heroku上运行了一个Rails应用程序,Unicorn配置为处理3个并发工作进程

我们还设置了延迟作业,以异步处理由客户端请求触发的一些长时间运行的文件处理任务

我们希望在任务完成时更新客户端。我们可以通过传统的轮询来实现这一点,但是我们正在研究使用新的Heroku插件,以提高响应能力并减少不必要的HTTP轮询请求的开销


EventSource HQ混合使用SSE和长轮询来确保跨浏览器兼容性。我想弄清楚的是,EventSource HQ打开的连接是否在连接的生命周期内绑定了一个Unicorn工作进程?换句话说,如果我有3个通过EventSource HQ连接处理的并发长时间运行的任务,我的web dyno是否无法接收新请求?

如果使用类似EventSource的东西,则不会为每个连接的客户端阻止Unicorn进程。这是因为它使用的是发布/订阅模型。客户机订阅EventSource套接字(您从服务器创建并将套接字id传递给客户机),服务器在发生事件(如完成作业)时向其发布该套接字


现在,如果您想实现自己的发布/订阅API,那么使用node.js或非阻塞框架(如计划使用ActionController:Live?服务器发送的事件(Eventsource)API分层在HTTP上)也相当容易。HTTP也有空闲超时。我相信您正在计划使用Action Controller:Live,然后您可以在完成调用后关闭流。然而,这可能会扼杀一次完成所有请求的机会,因此需要诸如Redis或pgsqlnnotify之类的东西。