def import_offline_feature(): eggroll.init(job_id=generate_job_id(), mode=WORK_MODE) request_data = request.json try: if not request_data.get("jobId"): return get_json_result(status=2, msg="no job id") job_id = request_data.get("jobId") job_data = query_job_by_id(job_id=job_id) if not job_data: return get_json_result(status=3, msg="can not found this job id: %s" % request_data.get("jobId", "")) response = GetFeature.import_data(request_data, json.loads(job_data[0]["config"])) if response.get("status", 1) == 0: update_job_by_id(job_id=job_id, update_data={ "status": "success", "end_date": datetime.datetime.now() }) return get_json_result() else: return get_json_result(status=1, msg="request offline feature error: %s" % response.get("msg", "")) except Exception as e: logger.exception(e) return get_json_result(status=1, msg="request offline feature error: %s" % e)
def update_job(job_id, role, party_id): request_data = request.json logger.info('job_id:{} role:{} party_id:{} status:{}'.format( job_id, role, party_id, request_data.get('status'))) job_info = save_job_info(job_id=job_id, role=role, party_id=party_id, save_info={"status": request_data.get("status")}) if not job_info: logger.info( 'job_id {} may not be started by the Task Manager.'.format(job_id)) return get_json_result( job_id=job_id, status=101, msg='this task may not be started by the Task Manager.') update_job_queue(job_id=job_id, role=role, party_id=party_id, save_data={"status": request_data.get("status")}) if request_data.get("status") in ["success", "failed", "deleted"]: pop_from_job_queue(job_id=job_id) if is_job_initiator(job_info.initiator, PARTY_ID): # I am job initiator logger.info('i am job {} initiator'.format(job_id)) # check job status jobs = query_job_by_id(job_id=job_id) job_status = set([job.status for job in jobs]) do_stop_job = False if 'failed' in job_status or 'deleted' in job_status: do_stop_job = True elif len(job_status) == 1 and 'success' in job_status: do_stop_job = True if do_stop_job: stop_job(job_id=job_id) else: # send job status to initiator if not request_data.get('initiatorUpdate', False): request_data['initiatorUpdate'] = True federated_api(job_id=job_id, method='POST', url='/job/jobStatus/{}/{}/{}'.format( job_id, role, party_id), party_id=job_info.initiator, json_body=request_data) return get_json_result(job_id=job_id)
def query_job(job_id): jobs = query_job_by_id(job_id=job_id) return get_json_result(job_id=job_id, data=[job.to_json() for job in jobs])