Coro based psgi web server
corona --listen :9090 app.psgi
Corona is a Coro based Plack web server. It uses Net::Server::Coro under the hood, which means we have coroutines (threads) for each socket, active connections and a main loop.
Because it's Coro based your web application can actually block with I/O wait as long as it yields when being blocked, to the other coroutine either explicitly with \*(C`cede\*(C' or automatically (via Coro::* magic).
# your web application use Coro::LWP; my $content = LWP::Simple::get($url); # this yields to other threads when IO blocks
Corona also uses Coro::AIO (and \s-1IO::AIO\s0) if available, to send the static filehandle using sendfile\|(2).
The simple benchmark shows this server gives 2000 requests per second in the simple Hello World app, and 300 requests to serve 2MB photo files when used with \s-1AIO\s0 modules. Brilliantly fast.
This web server sets \*(C`psgi.multithread\*(C' env var on.
Tatsuhiko Miyagawa
This module is licensed under the same terms as Perl itself.
Coro Net::Server::Coro Coro::AIO