class_docstr: An artifact store's middleware for exponential backoff.
  
  Example:
     .. code-block:: python
  
         import optuna
         from optuna.artifacts import upload_artifact
         from optuna.artifacts import Boto3ArtifactStore
         from optuna.artifacts import Backoff
  
  
         artifact_store = Backoff(Boto3ArtifactStore("my-bucket"))
  
  
         def objective(trial: optuna.Trial) -> float:
             ... = trial.suggest_float("x", -10, 10)
             file_path = generate_example(...)
             upload_artifact(trial, file_path, artifact_store)
             return ...
code: def __init__(
      self,
      backend: ArtifactStore,
      *,
      max_retries: int = 10,
      multiplier: float = 2,
      min_delay: float = 0.1,
      max_delay: float = 30,
  ) -> None:
      # Default sleep seconds:
      # 0.1, 0.2, 0.4, 0.8, 1.6, 3.2, 6.4, 12.8, 25.6, 30
      self._backend = backend
      assert max_retries > 0
      assert multiplier > 0
      assert min_delay > 0
      assert max_delay > min_delay
      self._max_retries = max_retries
      self._multiplier = multiplier
      self._min_delay = min_delay
      self._max_delay = max_delay
  
file_path: optuna/optuna/artifacts/_backoff.py
imports: from __future__ import annotations
  import logging
  import time
  from typing import TYPE_CHECKING
  from optuna.artifacts.exceptions import ArtifactNotFound
label_desc: Use image node_id 1 to create a new Backoff object  with example: obj = Backoff(backend)