Uh oh!
There was an error while loading. Please reload this page.
Add async XCom accessors for async tasks - #68299
Conversation
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
bda0641 to
8831649Compare8831649 to
7ee450cComparedabla
commented
Jun 10, 2026
Same here, it would be good if @ashb or @amoghrajesh could validate this PR. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
jscheffl
commented
Jun 14, 2026
@dabla you should improve a bit on your setup via prek, there are some static check failures. When fixed I'd be able to review. |
c55986b to
981e6e1Compare…for xcom_pull and axcom_pull
981e6e1 to
7fa919fCompareUh oh!
There was an error while loading. Please reload this page.
ashb
left a comment
There was a problem hiding this comment.
Few nits/q's but looks good overall
…aget_one methods when no XCom value was found
…et_one methods when no XCom value was found
Uh oh!
There was an error while loading. Please reload this page.
Related PR's
Related to:
#68214
#60268
#62922
Why
Async
@taskfunctions currently cannot efficiently pull or push XCom values because the existingxcom_pullandxcom_pushimplementations rely on synchronous communication with the task supervisor. Invoking these methods from an async task blocks the event loop, reducing the benefits of asynchronous execution.This change introduces asynchronous XCom operations, allowing async Python tasks to interact with XComs without blocking the event loop.
This capability is also an important building block for the upcoming Task Iteration feature (AIP-104). Task Iteration relies on the ability to persist intermediate progress and results during execution, which requires non-blocking XCom operations when used with async tasks. As such, this PR serves as preparatory work for AIP-104 while also providing immediate value by enabling fully asynchronous XCom interactions in existing async Python tasks.
In addition, this functionality lays the groundwork for future async operators. As more operators adopt native async implementations, they will be able to leverage asynchronous XCom operations without blocking the event loop, enabling more efficient and scalable async execution patterns throughout Airflow.
How
axcom_pull/axcom_pushtoRuntimeTaskInstance, awaiting the supervisor round-trip viaasendinstead of blocking.aget_one/aget_all/asettoBaseXComfor async XCom retrieval and storage.Was generative AI tooling used to co-author this PR?
Claude Opus 4.6
{pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.