# NAME
Twiggy::Prefork - Preforking AnyEvent HTTP server for PSGI
# SYNOPSIS
$ plackup -s Twiggy::Prefork -a app.psgi
# DESCRIPTION
Twiggy::Prefork is Preforking AnyEvent HTTP server for PSGI based on Twiggy. This server supports,
- Min/Max Request Per Child
supports Min/Max Request Per Child feature.
- Superdaemon aware
Supports [Server::Starter](
http://search.cpan.org/perldoc?Server::Starter) for hot deploy and
graceful restarts.
To use it, instead of the usual:
plackup --server Twiggy::Prefork --port 8111 app.psgi
install [Server::Starter](
http://search.cpan.org/perldoc?Server::Starter) and use:
start_server --port 8111 plackup --server Twiggy::Prefork app.psgi
# OPTIONS
- max\_workers
number of worker processes (default: 10)
- max\_reqs\_per\_child
max. number of requests to be handled before a worker process exits (default: 100)
- min\_reqs\_per\_child
if set, randomizes the number of requests handled by a single worker process between the value and that supplied by --max-reqs-per-child (default: none)
# PSGI extensions
- psgix.exit\_guard
AnyEvent::CondVar object. You can make graceful stop mechanism with this variable.
use Coro;
use AnyEvent;
my $channel = Coro::Channel->new(100);
async {
while(1){
my $q = $channel->get;
# works..
$q[0]->end;
}
};
#psgi app
sub {
my $env = shift;
my $cv = AE::cv;
async {
$env->{psgix.exit_guard}->begin;
$channel->put([$env->{psgix.exit_guard}]);
$cv->send;
};
return sun {
my $start_response = shift;
$cv->cb(sub {
$start_response->([200,['Content-Type'=>'text/plain'],['OK']]);
});
}
}
Block Twiggy::Prefork worker process exiting until your jobs done.
# AUTHOR
Masahiro Nagano <kazeburo {at} gmail.com>
Shigeki Morimoto
# SEE ALSO
[Twiggy](
http://search.cpan.org/perldoc?Twiggy), [Parallel::Prefork](
http://search.cpan.org/perldoc?Parallel::Prefork)
# LICENSE
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.