Exemple #1
0
def master(queue, rep_queue, outputs):
    from multiprocessing import Process
    import logging
    from settings import add_fab_to_env_path

    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s %(levelname)s - %(message)s',
        datefmt='%d/%m/%Y %H:%M:%S',
        filename="master.log"
    )

    logging.info("<master up!>")
    add_fab_to_env_path()
    workers = []
    while True:
        try:
            (cmd,) = queue.get()
        except:
            break
        logging.debug("master rcv cmd : %s" % cmd)
        workers = [w for w in workers if w.is_alive()]  # gc ?
        if cmd == "l":
            rep = [(w.pid, w.cmd) for w in workers]
        else:
            w = Process(target=run_command, args=[cmd, outputs])
            w.cmd = cmd
            w.start()
            workers.append(w)
            rep = w.pid
        rep_queue.put(rep)
    logging.info("<master down!>")