The key thing that isn't possible is the automatic clearing.

If I notice a problem in the data after the cluster has been torn down and I 
want to the rerun a single task then you have to manually clear the create 
cluster task and the task you want to run AND the teardown task. (This is not a 
hypothetical but a real issue I have had)

More generally this is part of the trend of giving DAG authors the ability to 
specify "directly" the constructs and flows that they currently have to hack 
around.

-a

On 15 January 2023 00:26:31 GMT, Alexander Shorin <kxe...@gmail.com> wrote:
>Hi!
>
>This looks like sugar without any practical difference from explicitly
>defined setup/teardown operators in dag. And the example doesn't add any
>automatic'sation except to set you free from defining explicit relations
>between setup, teardown and regular operators, but why all of this when you
>already could do this explicitly and reliable? Looks like a feature just
>for a feature.
>
>If that example of implementation could hide within a context details about
>ti.xcom_pull(task_id="create_cluster") and hide the need of explicit call
>setup/teardown operators - that would be a bit helpful, but there is no
>such a thing.
>
>--
>,,,^..^,,,
>
>
>On Mon, Jan 9, 2023 at 7:27 PM Ash Berlin-Taylor <a...@apache.org> wrote:
>
>> Hello everyone,
>>
>> I am calling for a vote on AIP-52
>> https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-52+Automatic+setup+and+teardown+tasks
>> There haven't been any notable changes to the original document, mostly
>> just clairifications to the proposal.
>>
>> This is my +1, and the vote will last until 10am (UTC) on Monday 16th
>> January.
>>
>> Thanks,
>> Ash
>> (To remind people what this is about, here is the example from the first
>> dicuss email)
>>
>> ```
>> from airflow import DAG, task, setup, teardown
>>
>>
>> with DAG(dag_id='test'):
>>     @setup
>>     def create_cluster():
>>         ...
>>         return cluster_id
>>
>>     @task
>>     def load(ti):
>>         # Example:
>>         cluster_id = ti.xcom_pull(task_id="create_cluster")
>>
>>     def summarize():
>>         ...
>>
>>     @teardown(on_failure_fail_dagrun=False)
>>     def teardown_cluster():
>>         ...
>>        cluster_id = ti.xcom_pull(task_id="create_cluster")
>>
>>     create_cluster()
>>     load() >> summarize()
>>     teardown_cluster()
>> ```
>>
>>

Reply via email to