Skip to content

kazeburo/Twiggy-Prefork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 for hot deploy and graceful restarts.

    To use it, instead of the usual:

      plackup --server Twiggy::Prefork --port 8111 app.psgi
    

    install 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. If passed 0, child process is not existed by number of requests (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 sub {
          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, Parallel::Prefork

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

About

Preforking AnyEvent HTTP server for PSGI

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages