diff options
author | Matthew Somerville <matthew@mysociety.org> | 2020-03-10 17:09:55 +0000 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2020-04-02 17:14:21 +0100 |
commit | 46300feaf7481ef4dac67ee312becf856c184135 (patch) | |
tree | 7e9fd914ca30bc47f9ed2309c37ed143f56e768c /perllib/Open311/GetServiceRequestUpdates.pm | |
parent | 1f0473c9844b6e32338d1c1af6e368f3387e8890 (diff) |
Parallelize fetching updates.
Allow a configurable number of bodies to fetch updates simultaneously.
Diffstat (limited to 'perllib/Open311/GetServiceRequestUpdates.pm')
-rw-r--r-- | perllib/Open311/GetServiceRequestUpdates.pm | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm index a407d8e37..e27a08068 100644 --- a/perllib/Open311/GetServiceRequestUpdates.pm +++ b/perllib/Open311/GetServiceRequestUpdates.pm @@ -2,6 +2,7 @@ package Open311::GetServiceRequestUpdates; use Moo; use Open311; +use Parallel::ForkManager; use FixMyStreet::DB; use FixMyStreet::App::Model::PhotoSet; use DateTime::Format::W3CDTF; @@ -37,7 +38,11 @@ sub fetch { $bodies = $bodies->search( { name => $self->body } ); } + my $procs = FixMyStreet->config('FETCH_COMMENTS_PROCESSES') || 0; + my $pm = Parallel::ForkManager->new(FixMyStreet->test_mode ? 0 : $procs); while ( my $body = $bodies->next ) { + $pm->start and next; + $self->current_body( $body ); my %open311_conf = ( @@ -57,7 +62,11 @@ sub fetch { $self->blank_updates_permitted( $body->blank_updates_permitted ); $self->system_user( $body->comment_user ); $self->process_body(); + + $pm->finish; } + + $pm->wait_all_children; } sub parse_dates { |