Skip to content

Commit a7da867

Browse files
committed
Reduce the range of retry
1 parent de9841c commit a7da867

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

lib/statistics/client.rb

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
module Statistics
22
class Client
3-
class APIRateLimitError < ::StandardError; end
4-
53
class_attribute :debug
64
self.debug = false
75

@@ -81,31 +79,34 @@ def search(keyword:)
8179
end
8280

8381
def fetch_events(group_id:, since_at: @default_since, until_at: @default_until)
84-
params = {
85-
page: 1,
86-
since: since_at,
87-
until: until_at
88-
}
89-
events = []
82+
begin
83+
params = {
84+
page: 1,
85+
since: since_at,
86+
until: until_at
87+
}
88+
events = []
9089

91-
loop do
92-
part = @client.get("groups/#{group_id}/events", params)
90+
loop do
91+
part = @client.get("groups/#{group_id}/events", params)
9392

94-
break if part.size.zero?
93+
break if part.size.zero?
9594

96-
events.push(*part.map { |e| e['event'] })
95+
events.push(*part.map { |e| e['event'] })
9796

98-
break if part.size < 25 # 25 items / 1 request
97+
break if part.size < 25 # 25 items / 1 request
9998

100-
params[:page] += 1
101-
end
99+
params[:page] += 1
100+
end
102101

103-
events
104-
rescue Faraday::ClientError => e
105-
if e.response[:status] == 429
106-
raise Client::APIRateLimitError
107-
else
108-
raise e
102+
events
103+
rescue Faraday::ClientError => e
104+
raise e unless e.response[:status] == 429
105+
106+
puts 'API rate limit exceeded.'
107+
puts "This task will retry in 60 seconds from now(#{Time.zone.now})."
108+
sleep 60
109+
retry
109110
end
110111
end
111112
end

lib/tasks/statistics.rake

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,8 @@ namespace :statistics do
4444
raise StopIteration if nm > to
4545
list << nm
4646
}.each { |date|
47-
begin
48-
puts "Aggregate for #{date.strftime('%Y/%m')}"
49-
Statistics::Aggregation.run(date: date)
50-
rescue Statistics::Client::APIRateLimitError
51-
puts 'API rate limit exceeded.'
52-
puts "This task will retry in 60 seconds from now(#{Time.zone.now})."
53-
sleep 60
54-
retry
55-
end
47+
puts "Aggregate for #{date.strftime('%Y/%m')}"
48+
Statistics::Aggregation.run(date: date)
5649
}
5750
end
5851

0 commit comments

Comments
 (0)