scheduler.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:FogLAMP 作者: foglamp 项目源码 文件源码
def get_tasks(request):
    """
    Returns the list of tasks

    :Example: curl -X GET  http://localhost:8082/foglamp/task
    :Example: curl -X GET  http://localhost:8082/foglamp/task?name=xxx
    :Example: curl -X GET  http://localhost:8082/foglamp/task?state=xxx
    :Example: curl -X GET  http://localhost:8082/foglamp/task?name=xxx&state=xxx
    """

    try:
        limit = request.query.get('limit') if 'limit' in request.query else '100'
        if limit:
            if not re.match("(^[0-9]*$)", limit):
                raise web.HTTPBadRequest(reason='This limit {} not permitted.'.format(limit))
            elif int(limit) > 100:
                limit = 100
            else:
                limit = int(limit)

        state = request.query.get('state') if 'state' in request.query else None
        if state:
            if state.upper() not in [t.name for t in list(Task.State)]:
                raise web.HTTPBadRequest(reason='This state value {} not permitted.'.format(state))
            else:
                z = dict()
                for i in list(Task.State):
                    z.update({i.name: i.value})
                state = z[state.upper()]

        name = request.query.get('name') if 'name' in request.query else None

        where_clause = None
        if name and state:
            where_clause = (["process_name", "=", name], ["state", "=", state])
        elif name:
            where_clause = ["process_name", "=", name]
        elif state:
            where_clause = ["state", "=", state]

        tasks = await server.Server.scheduler.get_tasks(where=where_clause, limit=limit)

        if len(tasks) == 0:
            raise TaskNotFoundError("No Tasks")

        new_tasks = []
        for task in tasks:
            new_tasks.append(
                {'id': str(task.task_id),
                     'process_name': task.process_name,
                     'state': Task.State(int(task.state)).name,
                     'start_time': str(task.start_time),
                     'end_time': str(task.end_time),
                     'exit_code': task.exit_code,
                     'reason': task.reason
                 }
            )

        return web.json_response({'tasks': new_tasks})
    except (ValueError, TaskNotFoundError) as ex:
        raise web.HTTPNotFound(reason=str(ex))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号