def METHOD_NAME(self):
    self._is_running = True
    time_socket = time.time()
    # Create a TCP/IP socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.sock = sock
    # Bind the socket to the port - skip already used ports
    while True:
        try:
            server_address = ("localhost", self.port)
            sock.bind(server_address)
            break
        except OSError:
            self.port += 1
    self.log.debug(
        "Running Socked thread on {}:{}".format(*server_address)
    )
    env = os.environ.copy()
    env["OPENPYPE_PROCESS_MONGO_ID"] = str(Logger.mongo_process_id)
    # OpenPype executable (with path to start script if not build)
    args = get_openpype_execute_args(
        # Add `run` command
        "run",
        self.filepath,
        *self.additional_args,
        str(self.port)
    )
    kwargs = {
        "env": env,
        "stdin": subprocess.PIPE
    }
    if not sys.stdout:
        # Redirect to devnull if stdout is None
        kwargs["stdout"] = subprocess.DEVNULL
        kwargs["stderr"] = subprocess.DEVNULL
    self.subproc = subprocess.Popen(args, **kwargs)
    # Listen for incoming connections
    sock.listen(1)
    sock.settimeout(1.0)
    while True:
        if not self._is_running:
            break
        try:
            connection, client_address = sock.accept()
            time_socket = time.time()
            connection.settimeout(1.0)
            self.connection = connection
        except socket.timeout:
            if (time.time() - time_socket) > self.MAX_TIMEOUT:
                self.log.error("Connection timeout passed. Terminating.")
                self._is_running = False
                self.subproc.terminate()
                break
            continue
        try:
            time_con = time.time()
            # Receive the data in small chunks and retransmit it
            while True:
                try:
                    if not self._is_running:
                        break
                    data = None
                    try:
                        data = self.get_data_from_con(connection)
                        time_con = time.time()
                    except socket.timeout:
                        if (time.time() - time_con) > self.MAX_TIMEOUT:
                            self.log.error(
                                "Connection timeout passed. Terminating."
                            )
                            self._is_running = False
                            self.subproc.terminate()
                            break
                        continue
                    except ConnectionResetError:
                        self._is_running = False
                        break
                    self._handle_data(connection, data)
                except Exception as exc:
                    self.log.error(
                        "Event server process failed", exc_info=True
                    )
        finally:
            # Clean up the connection
            connection.close()
            if self.subproc.poll() is None:
                self.subproc.terminate()
            self.finished = True