class_docstr: A temporary blacklist of non-responding peers with exponential backoff policy
  :param base_time: peers are suspended for this many seconds by default
  :param backoff_rate: suspension time increases by this factor after each successive failure
class_docstr_tok: ["A","temporary","blacklist","of","non-responding","peers","with","exponential","backoff","policy",":","param","base_time",":","peers","are","suspended","for","this","many","seconds","by","default",":","param","backoff_rate",":","suspension","time","increases","by","this","factor","after","each","successive","failure"]
docstr: peer failed to respond, add him to blacklist or increase his downtime
docstr_tok: ["peer","failed","to","respond",",","add","him","to","blacklist","or","increase","his","downtime"]
code: def register_failure(self, peer: PeerID):
      """peer failed to respond, add him to blacklist or increase his downtime"""
      if peer not in self.banned_peers and self.base_time > 0:
          ban_duration = (
              self.base_time * self.backoff ** self.ban_counter[peer]
          )
          self.banned_peers.store(
              peer,
              self.ban_counter[peer],
              expiration_time=get_dht_time() + ban_duration,
          )
          self.ban_counter[peer] += 1
  
imports: from __future__ import annotations
  import asyncio
  import dataclasses
  import os
  import random
  from collections import Counter, defaultdict
  from dataclasses import dataclass, field
  from functools import partial
  from typing import Any, Awaitable, Callable, Collection, DefaultDict, Dict, List, Optional, Sequence, Set, Tuple, Type, Union
  from multiaddr import Multiaddr
  from sortedcontainers import SortedSet
  from hivemind.dht.crypto import DHTRecord, RecordValidatorBase
  from hivemind.dht.protocol import DHTProtocol
  from hivemind.dht.routing import DHTID, BinaryDHTValue, DHTKey, DHTValue, Subkey, get_dht_time
  from hivemind.dht.storage import DictionaryDHTValue
  from hivemind.dht.traverse import traverse_dht
  from hivemind.p2p import P2P, PeerID
  from hivemind.utils import MSGPackSerializer, SerializerBase, get_logger
  from hivemind.utils.auth import AuthorizerBase
  from hivemind.utils.timed_storage import DHTExpiration, TimedStorage, ValueWithExpiration
label_desc: Use image node_id 2 for calling the Blacklist obj's underlying member method code with example usage: obj.register_failure(peer) without return types