The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Message::Passing::PSGI - ALPHA QUALITY PSGI adaptor for Message::Passing

SYNOPSIS

    # Run the server - note that the -e has to all be on one line!
    plackup -E production -s Twiggy -MPlack::App::Message::Passing -e'Plack::App::Message::Passing->new(return_address => "tcp://127.0.0.1:5555", send_address => "tcp://127.0.0.1:5556")->to_app'

    # Run your app with the handler
    plackup -E production -s Message::Passing testapp.psgi --host 127.0.0.1 --port 5556

    # Browse to:
    http://localhost:5000/

DESCRIPTION

ALPHA QUALITY EXPERIMENT - YOU HAVE BEEN WARNED!

This module implements a mongrel2 like strategy for web handlers, using Message::Passing::ZeroMQ.

WHY

Because I could! It's a useful experiment to prove that Message::Passing can be used for things entirely unlike my initial goals.

NO, REALLY?

Theoretically, this is quite an interesting model - as you've totally split the front end connection acceptance and the back end request handling, you can do things which are harder in other server environments trivially.

Examples of things that 'just work' include:

Adding more handler processes

Totally dynamic, run as many as you want

Adding handler processes on other servers

As long as your send/return sockets are bound to a host that's network accessible, you can spin up handlers wherever you want.

Upgrade the application in production

You can spin up a new version, verify it appears to be working correctly etc before shutting down the old version

Profile the application in production

Just run a handler with NYTProf..

NOTE: The properties above _do not_ exist in the current code - you will drop requests in-flight if you shut handlers down!! (Patches to fix this should not be that hard, and would be welcome if anyone is interested)

If you're actually interested in using this in production, I'd recommend you look at the real mongrel2, and Plack::Handler::Mongrel2.

BUGS

Many, and varied. Please do not try to run this in production ;_)

Issues include:

Large responses will use SEVERAL times the response length in RAM
Requests never timeout
App Handler crashes / restarts will lost in-flight requests.
Quite probably leaks RAM.

This has not been tested, which means I quite probably got it wrong somewhere ;)

SEE ALSO

Plack::App::Message::Passing.
Plack::Handler::Message::Passing.
mongrel2
Message::Passing
Message::Passing::ZeroMQ.

AUTHOR

Tomas Doran (t0m) <bobtfish@bobtfish.net>

COPYRIGHT

Copyright the above author.

LICENSE

GNU Affero General Public License, Version 3

If you feel this is too restrictive to be able to use this software, please talk to us as we'd be willing to consider re-licensing under less restrictive terms.