Пример #1
0
    def test(self, request):
        """测试 celery 任务能否提交"""
        from ..tasks import test_live

        try:
            s: AsyncResult = test_live.delay()
            return JsonResponse(msg='ok', data=True)
        except Task.OperationalError as e:
            return JsonResponse(code=1, msg=str(e), data=False)
Пример #2
0
    def query(self, request: Request):
        """
        查询 Celery 任务结果
        """
        params = self.CeleryTaskQueryParams(request.query_params).params_data

        task_result = TaskResult.objects.filter(task_id__in=params.task_id)
        serializer = CeleryTaskSerializer(task_result, many=True)
        return JsonResponse(serializer, request=request)
Пример #3
0
 def svn_project_dir(self, request: Request):
     """
     svn 项目目录
     :param request:
     :return:
     """
     params = self.ReqSVNProjectDirSer(request.query_params)
     params.o.project_name
     result = SvnPath.get_tree_list(params.o.project_name, params.o.path)
     return JsonResponse(result)
Пример #4
0
    def interface(self, request: Request, *args, **kwargs):
        '''获取字典的接口
        '''

        key = request.query_params.get('key')
        _r = {}
        if key:
            o = DictDefine.objects.filter(key=key).first()
            if o:
                _r = o.get_dict()
        return JsonResponse(_r)
Пример #5
0
    def revoke_task(self, request: Request):
        """
        撤销 Celery 任务
        """
        from celery_app import app
        params = self.CeleryTaskQueryParams(request.data).params_data

        for t_id in params.task_id:
            app.control.revoke(t_id, terminate=True)
        TaskResult.objects.filter(task_id__in=params.task_id).update(
            status=states.REVOKED)
        return JsonResponse(params, request=request)
Пример #6
0
 def svn_project_list(self, request):
     """
     获取 svn 项目
     :param request:
     :return:
     """
     project_list = SvnPath.get_svn_project_list()
     data = ObjectDict()
     data.results = []
     for project_name in project_list:
         data.results.append(dict(id=project_name, alias=project_name))
     return JsonResponse(data)
Пример #7
0
    def resource_members(self, request):
        """
        获取 角色下的成员
        :param request:
        :return:
        """
        parmas = self.RoleResourceMembersSer(request.query_params).params_data

        if parmas.id:
            role_model = self.get_queryset().filter(id=parmas.id).first()
            if role_model:
                parmas.members = role_model.resource_map_ids
        return JsonResponse(parmas)
Пример #8
0
    def tasks(self, request: Request):
        """
        查询 Celery 注册的任务
        """
        from celery import current_app
        data = ObjectDict()
        tasks = [
            dict(id=name, alias=(task.__doc__ or name).strip().split()[0])
            for name, task in current_app.tasks.items()
            if not name.startswith('celery.')
        ]

        data.results = tasks
        return JsonResponse(data, request=request)
Пример #9
0
    def query_progress(self, request: Request):
        """
            返回关联任务结果
        """
        params = self.AssociatedTaskResultQueryParmas(
            request.query_params).params_data
        if params.a_id:
            filter_condition = Q(a_id__in=params.a_id)
        if params.a_type_name:
            filter_condition = filter_condition & Q(
                a_type_name=params.a_type_name)
        if params.is_done:
            query = AssociatedTaskResult.filter_done_task()
        else:
            query = AssociatedTaskResult.filter_progress_task()
        a_task_results = query.filter(filter_condition)

        serializer = AssociatedTaskResultSer(a_task_results, many=True)
        return JsonResponse(serializer, request=request)
Пример #10
0
def statistic_execute(request, statistic_id=0, server_id=0):
    '''执行接口
    '''
    _r = {"code": -1, "msg": ""}
    server_id = int(request.REQUEST.get('server_id', '') or 0)
    statistic_id = int(request.REQUEST.get('statistic_id', '') or 0)
    sdate = request.REQUEST.get('sdate', '')
    edate = request.REQUEST.get('edate', '')

    try:
        assert sdate and edate and statistic_id, '时间或者统计ID为空!'
        sdate = convert_to_datetime(sdate)
        edate = convert_to_datetime(edate)
        server_ids = [server_id]
        statistic_ids = [statistic_id]
        sm = StatisticManager(sdate, edate, statistic_ids, server_ids)
        err_msgs = sm.start_update()[0]
        if not err_msgs:
            _r["code"] = 0
        _r["msg"] = '\n'.join(err_msgs)
    except:
        _r["msg"] = trace_msg()
    return JsonResponse(_r)