code: def send_heartbeat_addr_to_worker(worker_addr, heartbeat_server_addr):
      ctx = zmq.Context()
      socket = create_client_socket(
          ctx, worker_addr, heartbeat_timeout=True
      )
  
      try:
          socket.send_multipart(
              [
                  remote_constants.NORMAL_TAG,
                  to_byte(heartbeat_server_addr),
              ]
          )
          message = socket.recv_multipart()
      except zmq.error.Again as e:
          err_str = (
              "Can not connect to the worker please "
              "check if the worker is running."
          )
          logger.warning(err_str)
          raise Exception(err_str)
  
file_path: PARL/parl/remote/log_server.py
imports: import argparse
  import linecache
  import os
  import zmq
  from flask import Flask, current_app, jsonify, make_response, request, send_file
  from flask_cors import CORS
  from parl.remote import remote_constants
  from parl.utils import to_byte, logger
  from parl.remote.grpc_heartbeat import HeartbeatServerThread
  from parl.remote.zmq_utils import create_client_socket
label_desc: Use image node_id 3 for calling a global function with example usage: send_heartbeat_addr_to_worker(worker_addr, heartbeat_server_addr) without return types