Example #1
0
def pmake_worker(name,
                 job_queue,
                 result_queue,
                 signal_queue,
                 signal_token,
                 write_log=None):
    if write_log:
        f = open(write_log, 'w')

        def log(s):
            #print('%s: %s' % (name, s))
            f.write('%s: ' % name)
            f.write(s)
            f.write('\n')
            f.flush()
    else:

        def log(s):
            print('%s: %s' % (name, s))
            pass

    log('started pmake_worker()')
    signal.signal(signal.SIGINT, signal.SIG_IGN)

    def put_result(x):
        log('putting result in result_queue..')
        result_queue.put(x, block=True)
        if signal_queue is not None:
            log('putting result in signal_queue..')
            signal_queue.put(signal_token, block=True)
        log('(done)')

    try:
        while True:
            log('Listening for job')
            try:
                job = job_queue.get(block=True, timeout=5)
            except Empty:
                log('Could not receive anything.')
                continue
            if job == PmakeSub.EXIT_TOKEN:
                log('Received EXIT_TOKEN.')
                break

            log('got job: %s' % str(job))
            function, arguments = job
            try:
                result = function(arguments)
            except JobFailed as e:
                log('Job failed, putting notice.')
                log('result: %s' % str(e))  # debug
                put_result(e.get_result_dict())
            except JobInterrupted as e:
                log('Job interrupted, putting notice.')
                put_result(dict(abort=str(e)))  # XXX
            except CompmakeBug as e:  # XXX :to finish
                log('CompmakeBug')
                put_result(e.get_result_dict())
            else:
                log('result: %s' % str(result))
                put_result(result)

            log('...done.')

            # except KeyboardInterrupt: pass
    except BaseException as e:
        reason = 'aborted because of uncaptured:\n' + indent(
            traceback.format_exc(), '| ')
        mye = HostFailed(host="???",
                         job_id="???",
                         reason=reason,
                         bt=traceback.format_exc())
        log(str(mye))
        put_result(mye.get_result_dict())
    except:
        mye = HostFailed(host="???",
                         job_id="???",
                         reason='Uknown exception (not BaseException)',
                         bt="not available")
        log(str(mye))
        put_result(mye.get_result_dict())
        log('(put)')

    if signal_queue is not None:
        signal_queue.close()
    result_queue.close()
    log('clean exit.')
Example #2
0
def pmake_worker(name, job_queue, result_queue, signal_queue, signal_token,
                 write_log=None):
    if write_log:
        f = open(write_log, 'w')

        def log(s):
            #print('%s: %s' % (name, s))
            f.write('%s: ' % name)
            f.write(s)
            f.write('\n')
            f.flush()
    else:
        def log(s):
            print('%s: %s' % (name, s))
            pass

    log('started pmake_worker()')
    signal.signal(signal.SIGINT, signal.SIG_IGN)

    def put_result(x):
        log('putting result in result_queue..')
        result_queue.put(x, block=True)
        if signal_queue is not None:
            log('putting result in signal_queue..')
            signal_queue.put(signal_token, block=True)
        log('(done)')

    try:
        while True:
            log('Listening for job')
            try:
                job = job_queue.get(block=True, timeout=5)
            except Empty:
                log('Could not receive anything.')
                continue
            if job == PmakeSub.EXIT_TOKEN:
                log('Received EXIT_TOKEN.')
                break

            log('got job: %s' % str(job))
            function, arguments = job
            try:
                result = function(arguments)
            except JobFailed as e:
                log('Job failed, putting notice.')
                log('result: %s' % str(e))  # debug
                put_result(e.get_result_dict())
            except JobInterrupted as e:
                log('Job interrupted, putting notice.')
                put_result(dict(abort=str(e)))  # XXX
            except CompmakeBug as e:  # XXX :to finish
                log('CompmakeBug')
                put_result(e.get_result_dict())
            else:
                log('result: %s' % str(result))
                put_result(result)

            log('...done.')

            # except KeyboardInterrupt: pass
    except BaseException as e:
        reason = 'aborted because of uncaptured:\n' + indent(
                traceback.format_exc(), '| ')
        mye = HostFailed(host="???", job_id="???",
                         reason=reason, bt=traceback.format_exc())
        log(str(mye))
        put_result(mye.get_result_dict())
    except:
        mye = HostFailed(host="???", job_id="???",
                         reason='Uknown exception (not BaseException)',
                         bt="not available")
        log(str(mye))
        put_result(mye.get_result_dict())
        log('(put)')


    if signal_queue is not None:
        signal_queue.close()
    result_queue.close()
    log('clean exit.')
Example #3
0
def pmake_worker(name, job_queue, result_queue, signal_queue, signal_token, write_log=None):
    if write_log:
        f = open(write_log, "w")

        def log(s):
            f.write("%s: " % name)
            f.write(s)
            f.write("\n")
            f.flush()

    else:

        def log(s):
            pass

    log("started pmake_worker()")
    signal.signal(signal.SIGINT, signal.SIG_IGN)

    def put_result(x):
        log("putting result in result_queue..")
        result_queue.put(x, block=True)
        if signal_queue is not None:
            log("putting result in signal_queue..")
            signal_queue.put(signal_token, block=True)
        log("(done)")

    try:
        while True:
            log("Listening for job")
            job = job_queue.get(block=True)
            log("got job: %s" % str(job))
            if job == PmakeSub.EXIT_TOKEN:
                break
            function, arguments = job
            try:
                result = function(arguments)
            except JobFailed as e:
                log("Job failed, putting notice.")
                log("result: %s" % str(e))  # debug
                put_result(e.get_result_dict())
            except JobInterrupted as e:
                log("Job interrupted, putting notice.")
                put_result(dict(abort=str(e)))  # XXX
            except CompmakeBug as e:  # XXX :to finish
                log("CompmakeBug")
                put_result(e.get_result_dict())
            else:
                log("result: %s" % str(result))
                put_result(result)

            log("...done.")

            # except KeyboardInterrupt: pass
    except BaseException as e:
        reason = "aborted because of uncaptured:\n" + indent(traceback.format_exc(e), "| ")
        mye = HostFailed(host="???", job_id="???", reason=reason, bt=traceback.format_exc(e))
        log(str(mye))
        put_result(mye.get_result_dict())
    except:
        mye = HostFailed(host="???", job_id="???", reason="Uknown exception (not BaseException)", bt="not available")
        log(str(mye))
        put_result(mye.get_result_dict())
        log("(put)")

    if signal_queue is not None:
        signal_queue.close()
    result_queue.close()
    log("clean exit.")