code: def run_once(self):
      for call_hash in list(self._app._schedules.keys()):
          metadata = self._app._schedules[call_hash]
          start_time = datetime.fromisoformat(metadata["start_time"])
          current_date = datetime.now()
          next_event = croniter(
              metadata["cron_pattern"], start_time
          ).get_next(datetime)
          # When the event is reached, send a delta to activate scheduling.
          if current_date > next_event:
              component_delta = ComponentDelta(
                  id=metadata["name"],
                  delta=Delta(
                      {
                          "values_changed": {
                              f"root['calls']['scheduling']['{call_hash}']['running']": {
                                  "new_value": True
                              }
                          }
                      }
                  ),
              )
              self._app.delta_queue.put(component_delta)
              metadata["start_time"] = next_event.isoformat()
  
file_path: pytorch-lightning/src/lightning/app/utilities/scheduler.py
imports: import threading
  from datetime import datetime
  from typing import Optional
  from croniter import croniter
  from deepdiff import Delta
  from lightning.app.utilities.proxies import ComponentDelta
label_desc: Use image node_id 3 for calling the SchedulerThread obj's underlying member method code with example usage: obj.run_once() without return types