def do_biz(self): jobs = JobUtil.query_job_status(self.job_id, self.response_id) if not jobs: return {"jobId": self.job_id} ret = { "jobId": self.job_id, "responseDescriptor": { "status": jobs[0].status, "progress": jobs[0].progress, "statusDescription": jobs[0].descp, "errorCode": jobs[0].errcode, "responseId": jobs[0].indexid, "responseHistoryList": [{ "status": job.status, "progress": job.progress, "statusDescription": job.descp, "errorCode": job.errcode, "responseId": job.indexid } for job in jobs[1:]] } } return ret
def test_query_job_status(self): job_id = "1" JobStatusModel.objects.filter().delete() JobStatusModel(indexid=1, jobid=job_id, status="success", progress=10).save() JobStatusModel(indexid=2, jobid=job_id, status="success", progress=50).save() JobStatusModel(indexid=3, jobid=job_id, status="success", progress=100).save() jobs = JobUtil.query_job_status(job_id) self.assertEqual(1, len(jobs)) self.assertEqual(3, jobs[0].indexid) jobs = JobUtil.query_job_status(job_id, 1) self.assertEqual(2, len(jobs)) self.assertEqual(3, jobs[0].indexid) self.assertEqual(2, jobs[1].indexid) JobStatusModel.objects.filter().delete()
def post(self, request, job_id): try: logger.debug("Enter JobView:post, %s, %s ", job_id, request.data) jobs = JobUtil.query_job_status(job_id) if len(jobs) > 0 and jobs[-1].errcode == '255': return Response(data={'result': 'ok'}) progress = request.data.get('progress') desc = request.data.get('desc', '%s' % progress) errcode = '0' if request.data.get('errcode') in ( 'true', 'active') else '255' logger.debug("errcode=%s", errcode) JobUtil.add_job_status(job_id, progress, desc, error_code=errcode) return Response(data={'result': 'ok'}) except Exception as e: return Response(data={'result': 'error', 'msg': e.message})
def do_biz(self): logger.debug("GetJobInfoService, job_id=%s, response_id=%s", self.job_id, self.response_id) jobs = JobUtil.query_job_status(self.job_id, self.response_id) if not jobs: job_query_resp = JobQueryResp(self.job_id) return remove_none_key(job_query_resp.to_dict()) job_query_resp = JobQueryResp( self.job_id, JobDescriptor(jobs[0].status, jobs[0].progress, jobs[0].descp, jobs[0].errcode, jobs[0].indexid, [ JobHistory(job.status, job.progress, job.descp, job.errcode, job.indexid) for job in jobs[1:] ])) return remove_none_key(job_query_resp.to_dict())
def post(self, request, job_id): try: logger.debug("Enter JobView:post, job_id=%s, request=%s", job_id, request.data) req_serializer = JobUpdReqSerializer(data=request.data) if not req_serializer.is_valid(): raise BadRequestException(req_serializer.errors) jobs = JobUtil.query_job_status(job_id) if not jobs: raise BadRequestException("Job(%s) does not exist." % job_id) if jobs[-1].errcode != JOB_ERROR_CODE.ERROR: job_up_req = JobUpdReq(**request.data) desc = job_up_req.desc no_err_list = ('true', 'active', '0') err_code = JOB_ERROR_CODE.NO_ERROR if job_up_req.errcode in no_err_list else JOB_ERROR_CODE.ERROR logger.debug("errcode=%s", err_code) JobUtil.add_job_status(job_id, job_up_req.progress, desc, error_code=err_code) job_update_resp = JobUpdResp('ok') resp_serializer = JobUpdRespSerializer(job_update_resp) logger.debug("Leave JobView::post, response=%s", job_update_resp) return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED) except BadRequestException as e: job_update_resp = JobUpdResp('error', e.args[0]) resp_serializer = JobUpdRespSerializer(job_update_resp) return Response(data=resp_serializer.data, status=status.HTTP_400_BAD_REQUEST) except Exception as e: job_update_resp = JobUpdResp('error', e.args[0]) resp_serializer = JobUpdRespSerializer(job_update_resp) return Response(data=resp_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)