Exemplo n.º 1
0
def connect_mongodb():
    mongo_url = get_attr('MONGO_URI')
    client = MongoClient(mongo_url)
    dbname = get_attr('MONGO_DATABASE')
    db = client[
        dbname]  # 'examples' here is the database name.it will be created if it does not exist.
    # 如果 examples不存在,那么就会新建它
    return db
Exemplo n.º 2
0
def init():
    redis_host = get_attr('REDIS_HOST')
    sub = get_attr('SUBSCRIBE')
    localhost = get_attr('LOCAL_HOST')
    listener = Messager(redis_host)
    listener.subscribe(sub)
    db = connect_mongodb()
    taskdao = TaskDao(db)
    processdao = ProcessDao(db)
    process = ProcessController(localhost)
    return localhost, listener, taskdao, processdao, process
Exemplo n.º 3
0
def scaner():
    mongodb = connect_mongodb()
    taskdao = TaskDao(mongodb)
    processdao = ProcessDao(mongodb)
    localhost = get_attr('LOCAL_HOST')
    print(localhost)
    while (True):
        task_list = taskdao.find_by_localhost_and_status(localhost, 'running')
        for t in task_list:
            starttime = t['starttime']
            endtime = t['endtime']
            print(starttime + " " + endtime)
            if endtime != '':
                if compare_time(time.strftime("%Y/%m/%d %H:%M"), starttime,
                                endtime) is False:
                    taskid = str(t['_id'])
                    print(taskid)
                    process_list = processdao.find_by_localhost_and_taskid(
                        localhost, taskid)
                    for p in process_list:
                        if p['taskid'] == taskid and p['status'] != 'stopping':
                            print("杀死进程%s" % (p['pid']))
                            # p.terminate()
                            try:
                                os.kill(p['pid'], signal.SIGKILL)
                            except:
                                continue
                    delete(taskid, False)
                    t['status'] = 'stopping'
                    taskdao.save(t)
                    processdao.delete_by_localhost_and_taskid(
                        localhost, taskid)
        time.sleep(30)
Exemplo n.º 4
0
def wait(taskid):
    mongodb = connect_mongodb()
    taskdao = TaskDao(mongodb)
    task = taskdao.find_by_id(taskid)

    starttime = task['starttime']
    endtime = task['endtime']
    localhost = get_attr('LOCAL_HOST')
    flag = False
    while (flag is False):
        flag = compare_time(time.strftime("%Y/%m/%d %H:%M"), starttime,
                            endtime)
        time.sleep(30)
    if flag is True:
        task['status'] = 'running'
        taskdao.save(task)
        processdao = ProcessDao(mongodb)
        processdao.update_status_by_localhost_and_taskid(
            localhost, taskid, 'running')
        run(taskid)
Exemplo n.º 5
0
def execute(command, process, taskdao, processdao):
    print(command)
    params = Analyze(command)
    localhost = get_attr('LOCAL_HOST')
    op = params.get('op')
    if op == 'starttask' or op == 'suspendtask' or op == 'resumetask' or op == 'terminatetask':
        taskid = params.get('taskid')
        task = taskdao.find_by_id(taskid)
        slave = task['slave']
        print(slave)
        if localhost in slave:
            print(op)
            if op == 'starttask':
                status = taskdao.find_by_id(taskid)['status']
                # status = params.get('status')
                if status == 'running':
                    process.start_task(taskid, False)
                elif status == 'waitting':
                    process.wait_task(taskid, False)
            elif op == 'suspendtask':
                process.suspend_task(taskid)
            elif op == 'resumetask':
                process.resume_task(taskid)
            elif op == 'terminatetask':
                process.terminate_task(taskid)
    elif op == 'suspendprocess' or op == 'resumeprocess' or op == 'terminateprocess':
        processid = params.get('processid')
        pro = processdao.find_by_id(processid)
        ip = pro['localhost']
        pid = int(pro['pid'])
        if ip == localhost:
            if op == 'suspendprocess':
                process.suspend_process(pid)
            elif op == 'resumeprocess':
                process.resume_process(pid)
            elif op == 'terminateprocess':
                process.terminate_process(pid)
Exemplo n.º 6
0
def connect_redis():
    host = get_attr('REDIS_HOST')
    port = get_attr('REDIS_PORT')
    r = redis.Redis(host=host, port=port, db=0)
    return r