Пример #1
0
def handle_task(task):
    """
    处理每一个任务
    :param task: 任务对象
    :return:
    """
    if task.command_code == 1:
        # 添加一个容器
        r, obj = add_one_container(task)

        if r:
            # 保存容器服务器申请到的容器
            dao = AppContainModel(
                app_id=task.app_id,
                host=obj['host'],
                port=obj['r']['result']['port'],
                container_id=obj['r']['result']['containerId'],
                create_time=datetime.datetime.now(),
                api_url=obj['api_url'])
            dao.save()
            login_log(
                "common", "申请容器成功,触发应用id:%d,申请到的容器域名:%s,端口:%d,id:%s" %
                (task.app_id, obj['host'], obj['r']['result']['port'],
                 obj['r']['result']['containerId']))
        else:
            login_log("error", "申请容器失败,触发应用id:%d" % task.app_id)
    elif task.command_code == 2:
        # 移除一个容器
        remove_some_container(task, 1)
    elif task.command_code == 3:
        # 移除所有容器
        count = AppContainModel.select().where(
            AppContainModel.app_id == task.app_id).count()
        remove_some_container(task, count)
    else:
        # 未定义任务码
        login_log("error",
                  "未定义任务码:%d,触发应用id:%d" % (task.command_code, task.app_id))

    build_nginx_config(task.app_id)

    # 删除任务队列
    dao = TaskQueueModel.delete().where(TaskQueueModel.id == task.id)
    dao.execute()