[Dancer-users] Opening multiple database connections after startup

Alex C calyx238 at gmail.com
Mon Jul 16 22:29:13 CEST 2012


My app needs to connect to multiple databases (currently: 1 PostgreSQL
+ 2 Redis), and I would like it to do this as soon as possible after
startup.

However, due to Dancer's cached-coderef design, it is not trivial to
do this immediately after forking (as far as I know).

My current solution is this:

sub init_connections {
    $dbh      = connect_to_dbh();
    $redis_0  = connect_to_redis_0();
    $redis_1  = connect_to_redis_1();
    return 1;
}

sub before {
    $connected ||= init_connections;
}

This works fine, but if there are any connection problems, I don't
find out immediately.

So I tried coding the app to connect to itself, like this:

sub init_connections {
    ...
    connect_to_self();
    return 1;
}

But of course, my first experiment resulted in a loop!

I wonder if I am approaching this the right way. Before I spend much
more time on this, does anyone have any thoughts / experience on this
problem?

--
Alex


More information about the Dancer-users mailing list