2 # ---------------------------------------------------------------------
3 # Badge score generator
4 # ./badge_score_generator.pl <bootstrap_config> <lockfile>
5 # ---------------------------------------------------------------------
9 use OpenSRF::Utils::JSON;
11 use OpenSRF::Utils::SettingsClient;
12 use OpenSRF::MultiSession;
14 my $config = shift || die "bootstrap config required\n";
15 my $lockfile = shift || "/tmp/generate_badge_scores-LOCK";
22 open(F,'/bin/ps axo pid|');
23 while ( my $p = <F>) {
25 if ($p =~ s/\s*(\d+)$/$1/o && $p == $pid) {
26 die "I seem to be running already at pid $pid. If not, try again\n";
32 open(F, ">$lockfile");
36 OpenSRF::System->bootstrap_client( config_file => $config );
37 my $settings = OpenSRF::Utils::SettingsClient->new;
38 my $parallel = $settings->config_value( badge_score_generator => 'parallel' ) || 1;
40 my $multi_generator = OpenSRF::MultiSession->new(
41 app => 'open-ils.cstore',
46 my $storage = OpenSRF::AppSession->create("open-ils.storage");
47 my $r = $storage->request('open-ils.storage.biblio.regenerate_badge_list');
49 while (my $resp = $r->recv) {
50 my $badge_id = $resp->content;
51 $multi_generator->request(
52 'open-ils.cstore.json_query',
53 { from => [ 'rating.recalculate_badge_score' => $badge_id ] }
56 $storage->disconnect();
57 $multi_generator->session_wait(1);
58 $multi_generator->disconnect;