Mojoliciousでshutdown処理
マルチプロセスの環境でMojolisiousが動くとき、 Redisのなかに、プロセスを跨るデータを保持させるようにした場合。 ワーカープロセスが落ちた時、Redisのデータもお掃除して あげないとゴミが残ってしまう。
具体的に言うと、開設されたチャットルームの情報をRedisで管理 しているんですが、Mojoliciousを落としたとき、Redisの情報も 一緒にデリートしたい。 ENDブロックに書いていけばとりあえず動きそうな予感がする。
#!/usr/bin/env perl use Mojolicious::Lite; use Data::Dumper; # Documentation browser under "/perldoc" plugin 'PODRenderer'; my $clients ={}; get '/:id' => sub { my $self = shift; my $id = $self->param('id'); $clients->{$id} = 1; $self->render('index'); }; END{ app->log->debug(Dumper($clients)); # delete redis data here !! } app->start; __DATA__ @@ index.html.ep % layout 'default'; % title 'Welcome'; Welcome to the Mojolicious real-time web framework! @@ layouts/default.html.ep <!DOCTYPE html> <html> <head><title><%= title %></title></head> <body><%= content %></body> </html>