【发布时间】:2014-01-25 12:26:55
【问题描述】:
我有一个使用 plackup 运行的简单 Plack 应用程序(类似于 Plack::App::GitHub::WebHook)。我在请求处理程序中执行了一个冗长的操作,这导致应用程序在操作完成之前无法响应后续请求。如何在后台执行操作而不阻塞其他请求?还有一个后续问题,我怎样才能让后台队列中最多运行一个作业?
我习惯了libdispatch,所以我喜欢这样的东西:
my $queue = Hypothetical::Concurrency::Queue->new(max_jobs => 1);
$queue->dispatch(sub {
# code
});
【问题讨论】:
-
第一个你需要一个多进程 plack 服务器(starman 很流行),第二个需要某种形式的锁。
标签: multithreading perl plack