diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-03-26 19:05:38 +0100 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-03-26 19:05:38 +0100 |
commit | 3dbdefa8bdfb7029bb8c508f148554fd4fa6038d (patch) | |
tree | 4c6f13a1fd9b5d09dd17d605158671e486eb594b | |
parent | 67d1cf52674102da4edb87a874f033a3124fc5c6 (diff) |
work: decrease bahn.de request frequency; detect rate limiting2.11.5
-rw-r--r-- | lib/Travelynx/Command/work.pm | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/Travelynx/Command/work.pm b/lib/Travelynx/Command/work.pm index e131533..143812d 100644 --- a/lib/Travelynx/Command/work.pm +++ b/lib/Travelynx/Command/work.pm @@ -35,7 +35,8 @@ sub run { $self->app->log->debug("Removed ${num_incomplete} incomplete checkins"); } - my $errors = 0; + my $errors = 0; + my $dbris_rate_limited = 0; for my $entry ( $self->app->in_transit->get_all_active ) { @@ -53,10 +54,17 @@ sub run { eval { - $self->app->dbris->get_journey_p( trip_id => $train_id )->then( + Mojo::Promise->timer( $dbris_rate_limited ? 2.5 : 0.5 )->then( + sub { + return $self->app->dbris->get_journey_p( + trip_id => $train_id ); + } + )->then( sub { my ($journey) = @_; + $dbris_rate_limited = 0; + my $found_dep; my $found_arr; for my $stop ( $journey->route ) { @@ -131,6 +139,9 @@ sub run { $self->app->log->error( "work($uid) @ DBRIS $entry->{backend_name}: journey: $err" ); + if ( $err =~ m{HTTP 429} ) { + $dbris_rate_limited = 1; + } } )->wait; |