|
@@ -28,14 +28,34 @@ def get_tasks(params: Params = Depends(), db: Session = Depends(get_db)):
|
|
|
return paginate(crud.get_airflow_tasks(db), params)
|
|
|
|
|
|
|
|
|
-@router_af_run.get("/{run_id}/state")
|
|
|
+@router_af_run.get("/{run_id}/status")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
def get_airflow_run_status(run_id: int, db: Session = Depends(get_db)):
|
|
|
item = crud.get_airflow_run_once(item_id=run_id, db=db)
|
|
|
- uri_prefix, headers = get_airflow_api_info()
|
|
|
- url = f'{uri_prefix}/dags/dag_{item.job_id}/dagRuns/{item.af_run_id}'
|
|
|
- return {"state": requests.get(url, headers=headers).json().get('state', None)}
|
|
|
+ job_item = crud.get_airflow_job_once(db=db, item_id=item.job_id)
|
|
|
+ if job_item.job_mode == 1: # 常规模式
|
|
|
+ if item.status in [2, 3]:
|
|
|
+ return {"status": item.status}
|
|
|
+ else:
|
|
|
+ uri_prefix, headers = get_airflow_api_info()
|
|
|
+ url = f'{uri_prefix}/dags/dag_{item.job_id}/dagRuns/{item.af_run_id}'
|
|
|
+ state = requests.get(url, headers=headers).json().get('state', None)
|
|
|
+ status = {"queued": 0, 'running': 1, 'success': 2, 'failed': 3}.get(state, -1)
|
|
|
+ print(f'status is {status}, with state {state}')
|
|
|
+ if item.status != status: # queue or running
|
|
|
+ item.status = status
|
|
|
+ item.update(db)
|
|
|
+ print(f'after update {item.status}')
|
|
|
+ return {"status": status}
|
|
|
+ else:
|
|
|
+ uri_prefix, headers = get_airflow_api_info()
|
|
|
+ url = f'{uri_prefix}/dags/dag_{item.job_id}/dagRuns/{item.af_run_id}'
|
|
|
+ state = requests.get(url, headers=headers).json().get('state', None)
|
|
|
+ status = {"queued": 0, 'running': 1, 'success': 2, 'failed': 3}.get(state, -1)
|
|
|
+ print(f'status is {status}, with state {state}')
|
|
|
+
|
|
|
+ return {"status": status}
|
|
|
|
|
|
|
|
|
@router_af_run.post("/")
|
|
@@ -62,7 +82,7 @@ def add_airflow_run(item: Item, db: Session = Depends(get_db)):
|
|
|
"af_run_id": item.data['af_run_id'],
|
|
|
"details": {"tasks": {}, "dependence": {"tasks": job_item.dependence,
|
|
|
"sparks": sparks_dependence}},
|
|
|
- "status": 1},
|
|
|
+ "status": 0},
|
|
|
)
|
|
|
crud.create_airflow_run(db, item)
|
|
|
|