Resurrect #45927 and extend it.
Every request should have a response that the client reads.
We need the ability to pass/send errors from Supervisor to the task code (for instance if there is an error performing an action, or if the XCom can't be found) -- right now each end point handles this itself in a different way.
| exceptServerResponseErrorase: |
| ife.response.status_code==HTTPStatus.NOT_FOUND: |
| log.error( |
| "XCom not found", |
| dag_id=dag_id, |
| run_id=run_id, |
| task_id=task_id, |
| key=key, |
| map_index=map_index, |
| detail=e.detail, |
| status_code=e.response.status_code, |
| ) |
| # Airflow 2.x just ignores the absence of an XCom and moves on with a return value of None |
| # Hence returning with key as `key` and value as `None`, so that the message is sent back to task runner |
| # and the default value of None in xcom_pull is used. |
| returnXComResponse(key=key, value=None) |
for example shouldn't be handled in the API Client, but it should expose/raise the 404 to the Task itself and it should be handled there
Resurrect #45927 and extend it.
Every request should have a response that the client reads.
We need the ability to pass/send errors from Supervisor to the task code (for instance if there is an error performing an action, or if the XCom can't be found) -- right now each end point handles this itself in a different way.
airflow/task_sdk/src/airflow/sdk/api/client.py
Lines 267 to 282 in eb05869