1

这是我的情况:我正在使用 Dancer 框架开发一个 Web 应用程序,我想从浏览器端向服务器端的数据库中插入一些数据。问题是,当数据太大时,上传需要很长时间,我正在考虑显示一个描述进度的进度条。

我通过发送两个请求来实现这一点:一个用于发布数据,另一个用于轮询状态。但似乎一旦处理了第一个请求,另一个请求将在第一个请求完成之前无法工作。所以状态没有返回任何东西,突然 100%。为了解决这个问题,我在处理第一个请求时创建了一个线程,因此主线程可以返回来处理第二个轮询请求。这工作得很好,直到我不得不杀死在子线程中产生的一些子进程(这是另一个问题)。

所以我的问题是,除了多线程之外,还有其他关于同时处理多个请求的想法吗?通常网络程序员如何处理这种情况?

4

2 回答 2

3

同时处理多个请求应该没有问题。你如何运行你的应用程序?如果您使用内置服务器(perl your_app.pl),则默认情况下它是单线程的,一次只处理一个请求。

您可能想要使用多进程/多线程部署选项,例如 Starman。它在https://metacpan.org/module/YANICK/Dancer-1.3113/lib/Dancer/Deployment.pod#Running-on-Perl-webservers-with-plackup中有描述

于 2013-05-16T13:28:29.187 回答
1

我首先将 Dancer 粘合到 AnyEvent 并使用 Twiggy 来托管应用程序。谷歌搜索出现了这个,这看起来是一个很好的起点。

于 2013-05-16T13:29:00.893 回答