def report_error(self, host, pid, id, tb_report):
        print >>sys.stderr, "TRACEBACK: %s:%s ID %s\n%s" % \
              (host, str(pid), str(id), tb_report)
        if (host, pid) in self.clients_initializing:
            logfile = self.clients_initializing[(host, pid)]
            try:
                self.initialization_errors[host].append(logfile)
            except KeyError:
                self.initialization_errors[host] = [logfile]
        try:
            del self.pending[id]
        except KeyError:
            # Not associated with an actual task ID, do not record.
            if id is not None and id is not False:
                print >>sys.stderr, 'report_error: unknown ID %s' % str(id)
        else:
            print >>self.errorfile, id # KEEP PERMANENT RECORD OF FAILURE ID
            self.nerrors += 1
            self.errorfile.flush()
        return True  # USE THIS AS DEFAULT XMLRPC RETURN VALUE
get traceback report from client as text
dataset/ETHPy150Open cjlee112/pygr/pygr/coordinator.py/Coordinator.report_error