View | Details | Raw Unified | Return to bug 32558
Collapse All | Expand All

(-)a/debian/templates/koha-conf-site.xml.in (+5 lines)
Lines 457-462 __END_SRU_PUBLICSERVER__ Link Here
457
   <vhost>__MESSAGE_BROKER_VHOST__</vhost>
457
   <vhost>__MESSAGE_BROKER_VHOST__</vhost>
458
 </message_broker>
458
 </message_broker>
459
459
460
 <background_jobs_worker>
461
     <!-- Max simultaneous processes per worker -->
462
     <max_processes>1</max_processes>
463
 </background_jobs_worker>
464
460
 <do_not_remove_cookie>__KEEP_COOKIE__</do_not_remove_cookie>
465
 <do_not_remove_cookie>__KEEP_COOKIE__</do_not_remove_cookie>
461
 <do_not_remove_cookie>catalogue_editor_\d+</do_not_remove_cookie>
466
 <do_not_remove_cookie>catalogue_editor_\d+</do_not_remove_cookie>
462
 <!-- Uncomment lines like hereunder to not clear cookies at logout:
467
 <!-- Uncomment lines like hereunder to not clear cookies at logout:
(-)a/etc/koha-conf.xml (+5 lines)
Lines 274-279 Link Here
274
   <vhost></vhost>
274
   <vhost></vhost>
275
 </message_broker>
275
 </message_broker>
276
276
277
 <background_jobs_worker>
278
     <!-- Max simultaneous processes per worker -->
279
     <max_processes>1</max_processes>
280
 </background_jobs_worker>
281
277
 <do_not_remove_cookie>catalogue_editor_\d+</do_not_remove_cookie>
282
 <do_not_remove_cookie>catalogue_editor_\d+</do_not_remove_cookie>
278
 <!-- Uncomment lines like hereunder to not clear cookies at logout:
283
 <!-- Uncomment lines like hereunder to not clear cookies at logout:
279
      The cookie name is case sensitive.
284
      The cookie name is case sensitive.
(-)a/misc/background_jobs_worker.pl (-2 / +21 lines)
Lines 21-27 background_jobs_worker.pl - Worker script that will process background jobs Link Here
21
21
22
=head1 SYNOPSIS
22
=head1 SYNOPSIS
23
23
24
./background_jobs_worker.pl [--queue QUEUE]
24
./background_jobs_worker.pl [--queue QUEUE] [-m|--max-processes MAX_PROCESSES]
25
25
26
=head1 DESCRIPTION
26
=head1 DESCRIPTION
27
27
Lines 30-35 or if a Stomp server is not active it will poll the database every 10s for new j Link Here
30
30
31
You can specify some queues only (using --queue, which is repeatable) if you want to run several workers that will handle their own jobs.
31
You can specify some queues only (using --queue, which is repeatable) if you want to run several workers that will handle their own jobs.
32
32
33
--m --max-processes specifies how many jobs to process simultaneously
34
35
Max processes will be set from the command line option, the environment variable MAX_PROCESSES, or the koha-conf file, in that order of precedence.
36
By default the script will only run one job at a time.
37
33
=head1 OPTIONS
38
=head1 OPTIONS
34
39
35
=over
40
=over
Lines 52-67 use JSON qw( decode_json ); Link Here
52
use Try::Tiny;
57
use Try::Tiny;
53
use Pod::Usage;
58
use Pod::Usage;
54
use Getopt::Long;
59
use Getopt::Long;
60
use Parallel::ForkManager;
55
61
56
use Koha::Logger;
62
use Koha::Logger;
57
use Koha::BackgroundJobs;
63
use Koha::BackgroundJobs;
64
use C4::Context;
58
65
59
my ( $help, @queues );
66
my ( $help, @queues );
67
68
my $max_processes = $ENV{MAX_PROCESSES};
69
$max_processes ||= C4::Context->config('background_jobs_worker')->{max_processes} if C4::Context->config('background_jobs_worker');
70
$max_processes ||= 1;
71
60
GetOptions(
72
GetOptions(
73
    'm|max-processes=i' => \$max_processes,
61
    'h|help' => \$help,
74
    'h|help' => \$help,
62
    'queue=s' => \@queues,
75
    'queue=s' => \@queues,
63
) || pod2usage(1);
76
) || pod2usage(1);
64
77
78
65
pod2usage(0) if $help;
79
pod2usage(0) if $help;
66
80
67
unless (@queues) {
81
unless (@queues) {
Lines 75-80 try { Link Here
75
    warn sprintf "Cannot connect to the message broker, the jobs will be processed anyway (%s)", $_;
89
    warn sprintf "Cannot connect to the message broker, the jobs will be processed anyway (%s)", $_;
76
};
90
};
77
91
92
my $pm = Parallel::ForkManager->new($max_processes);
93
78
if ( $conn ) {
94
if ( $conn ) {
79
    # FIXME cf note in Koha::BackgroundJob about $namespace
95
    # FIXME cf note in Koha::BackgroundJob about $namespace
80
    my $namespace = C4::Context->config('memcached_namespace');
96
    my $namespace = C4::Context->config('memcached_namespace');
Lines 115-121 while (1) { Link Here
115
            next;
131
            next;
116
        }
132
        }
117
133
134
        $pm->start and next;
118
        process_job( $job, $args );
135
        process_job( $job, $args );
136
        $pm->finish;
119
137
120
    } else {
138
    } else {
121
        my $jobs = Koha::BackgroundJobs->search({ status => 'new', queue => \@queues });
139
        my $jobs = Koha::BackgroundJobs->search({ status => 'new', queue => \@queues });
Lines 130-136 while (1) { Link Here
130
148
131
            next unless $args;
149
            next unless $args;
132
150
151
            $pm->start and next;
133
            process_job( $job, { job_id => $job->id, %$args } );
152
            process_job( $job, { job_id => $job->id, %$args } );
153
            $pm->finish;
134
154
135
        }
155
        }
136
        sleep 10;
156
        sleep 10;
137
- 

Return to bug 32558