与dancer同时服务多个用户的方法



出于某种原因,我找不到下面这个问题的答案,可能是因为它太明显了。

在我使用perl dancer的实验中,我添加了一个路由,它只休眠10秒,然后返回一些东西。我这样做是为了模拟长时间运行的操作。我注意到,在这十秒钟里,舞女不会满足任何其他要求。我理解这是因为dancer是单线程的。

现在,这种单线程方法显然不适合即使是要求不高的应用程序。所以我相信一定有一些既定的解决办法。但我似乎不知道谷歌的正确搜索字符串。

让事情变得清楚:我不介意,当初始化长时间运行的操作本身的请求被阻塞时。我想要的是所有其他请求仍然被服务。

谁能告诉我关于

  • web服务器如何处理长时间运行的操作,而不阻塞其他请求?
  • 是否每个会话都有线程/进程,或者线程/进程是否可以按需生成,在我知道操作将花费很长时间的情况下
  • 如何保存会话信息时,多线程,即当浏览器不总是与相同的进程?
  • 关于舞蹈演员的任何特别建议(请随意推荐舞蹈演员的替代品)
  • 这将取决于web服务器和底层操作系统——这里有一个关于Apache httpd的答案:什么是Apache进程模型?

  • 请注意,'开箱即用'的舞者使用HTTP::Server::Simple这是单线程的,然而,这不是唯一的选择。请参阅https://metacpan.org/module/Dancer::Deployment了解从Apache CGI开始的一系列Dancer部署选项,它将为您的web服务器提供并发性。如果你在*nix环境下工作,生成一个分离的进程会很容易——在Win32上可能更难——但是你可能需要通过一些其他的机制而不是http响应(如STOMP或websockets)将结果发送回客户端。另一种方法是从Dancer路由中生成一个单独的长时间运行的流程,立即向该路由中的客户端返回一些查找键,然后让客户端在另一个路由上轮询以完成该流程。也许这个问题的答案是,你需要一个web服务器在前面的舞者可以处理并发请求。

  • 您的浏览器将会话信息存储在cookie中,而Dancer将在服务器上存储相应的会话信息,而Dancer将匹配这些信息。这并没有回答第三个问题,只是说不用担心。

  • 如果舞者是支持你的所有需求,除了并发/长时间运行的进程问题,然后听起来像阅读你的web服务器部署选项:https://metacpan.org/module/Dancer::Deployment可能会解决你的问题。请注意,如果你是在*nix环境下,你将有更多的选择基于Perl的并发web服务器,但我相信这个问题也可以在Windows上解决。我们使用IIS + FastCGI完成了一个概念验证。

相关内容

  • 没有找到相关文章