demarches-normaliennes/app/tasks/maintenance/update_service_etablissement_infos_task.rb

37 lines
835 B
Ruby

# frozen_string_literal: true
module Maintenance
class UpdateServiceEtablissementInfosTask < MaintenanceTasks::Task
# Géocode les services à partir des établissements
# 2024-05-27-01 PR #10106
# No more 20 geocoding by 10 seconds window
THROTTLE_LIMIT = 20
THROTTLE_PERIOD = 10.seconds
@@request_count = 0
@@period_start = Time.current
throttle_on(backoff: THROTTLE_LIMIT) do
if Time.current - @@period_start > THROTTLE_PERIOD
@@request_count = 0
@@period_start = Time.current
end
@@request_count += 1
@@request_count > THROTTLE_LIMIT
end
def collection
Service.where.not(siret: nil)
end
def process(service)
APIEntreprise::ServiceJob.perform_now(service.id)
end
def count
collection.count
end
end
end