code: def run(self) -> None:
      declare_experts(
          self.dht,
          self.module_backends.keys(),
          expiration_time=get_dht_time() + self.expiration,
      )
      while not self.stop.wait(self.update_period):
          declare_experts(
              self.dht,
              self.module_backends.keys(),
              expiration_time=get_dht_time() + self.expiration,
          )
  
file_path: hivemind/hivemind/moe/server/dht_handler.py
imports: import threading
  from functools import partial
  from typing import Dict, List, Optional, Sequence, Tuple, Union
  from hivemind.dht import DHT, DHTNode, DHTValue
  from hivemind.moe.client.expert import RemoteExpert, create_remote_experts
  from hivemind.moe.expert_uid import FLAT_EXPERT, UID_DELIMITER, UID_PATTERN, Coordinate, ExpertInfo, ExpertPrefix, ExpertUID, is_valid_uid, split_uid
  from hivemind.p2p import PeerID
  from hivemind.utils import MAX_DHT_TIME_DISCREPANCY_SECONDS, DHTExpiration, MPFuture, get_dht_time
label_desc: Use image node_id 2 for calling the DHTHandlerThread obj's underlying member method code with example usage: obj.run() without return types