blob: 3db629862e6d472fb737adbd45a88cd4463b2534 [file] [log] [blame]
:py:mod:`airflow.models.dagrun`
===============================
.. py:module:: airflow.models.dagrun
Module Contents
---------------
Classes
~~~~~~~
.. autoapisummary::
airflow.models.dagrun.TISchedulingDecision
airflow.models.dagrun.DagRun
.. py:class:: TISchedulingDecision
Bases: :py:obj:`NamedTuple`
Type of return for DagRun.task_instance_scheduling_decisions
.. py:attribute:: tis
:annotation: :List[airflow.models.taskinstance.TaskInstance]
.. py:attribute:: schedulable_tis
:annotation: :List[airflow.models.taskinstance.TaskInstance]
.. py:attribute:: changed_tis
:annotation: :bool
.. py:attribute:: unfinished_tis
:annotation: :List[airflow.models.taskinstance.TaskInstance]
.. py:attribute:: finished_tis
:annotation: :List[airflow.models.taskinstance.TaskInstance]
.. py:class:: DagRun(dag_id = None, run_id = None, queued_at = NOTSET, execution_date = None, start_date = None, external_trigger = None, conf = None, state = None, run_type = None, dag_hash = None, creating_job_id = None, data_interval = None)
Bases: :py:obj:`airflow.models.base.Base`, :py:obj:`airflow.utils.log.logging_mixin.LoggingMixin`
DagRun describes an instance of a Dag. It can be created
by the scheduler (for regular runs) or by an external trigger
.. py:attribute:: __tablename__
:annotation: = dag_run
.. py:attribute:: id
.. py:attribute:: dag_id
.. py:attribute:: queued_at
.. py:attribute:: execution_date
.. py:attribute:: start_date
.. py:attribute:: end_date
.. py:attribute:: run_id
.. py:attribute:: creating_job_id
.. py:attribute:: external_trigger
.. py:attribute:: run_type
.. py:attribute:: conf
.. py:attribute:: data_interval_start
.. py:attribute:: data_interval_end
.. py:attribute:: last_scheduling_decision
.. py:attribute:: dag_hash
.. py:attribute:: log_template_id
.. py:attribute:: __table_args__
.. py:attribute:: task_instances
.. py:attribute:: DEFAULT_DAGRUNS_TO_EXAMINE
.. py:method:: __repr__(self)
Return repr(self).
.. py:method:: logical_date(self)
:property:
.. py:method:: get_state(self)
.. py:method:: set_state(self, state)
.. py:method:: state(self)
:property:
.. py:method:: refresh_from_db(self, session = NEW_SESSION)
Reloads the current dagrun from the database
:param session: database session
.. py:method:: active_runs_of_dags(cls, dag_ids=None, only_running=False, session=None)
:classmethod:
Get the number of active dag runs for each dag.
.. py:method:: next_dagruns_to_examine(cls, state, session, max_number = None)
:classmethod:
Return the next DagRuns that the scheduler should attempt to schedule.
This will return zero or more DagRun rows that are row-level-locked with a "SELECT ... FOR UPDATE"
query, you should ensure that any scheduling decisions are made in a single transaction -- as soon as
the transaction is committed it will be unlocked.
:rtype: list[airflow.models.DagRun]
.. py:method:: find(cls, dag_id = None, run_id = None, execution_date = None, state = None, external_trigger = None, no_backfills = False, run_type = None, session = NEW_SESSION, execution_start_date = None, execution_end_date = None)
:classmethod:
Returns a set of dag runs for the given search criteria.
:param dag_id: the dag_id or list of dag_id to find dag runs for
:param run_id: defines the run id for this dag run
:param run_type: type of DagRun
:param execution_date: the execution date
:param state: the state of the dag run
:param external_trigger: whether this dag run is externally triggered
:param no_backfills: return no backfills (True), return all (False).
Defaults to False
:param session: database session
:param execution_start_date: dag run that was executed from this date
:param execution_end_date: dag run that was executed until this date
.. py:method:: find_duplicate(cls, dag_id, run_id, execution_date, session = NEW_SESSION)
:classmethod:
Return an existing run for the DAG with a specific run_id or execution_date.
*None* is returned if no such DAG run is found.
:param dag_id: the dag_id to find duplicates for
:param run_id: defines the run id for this dag run
:param execution_date: the execution date
:param session: database session
.. py:method:: generate_run_id(run_type, execution_date)
:staticmethod:
Generate Run ID based on Run Type and Execution Date
.. py:method:: get_task_instances(self, state = None, session = NEW_SESSION)
Returns the task instances for this dag run
.. py:method:: get_task_instance(self, task_id, session = NEW_SESSION, *, map_index = -1)
Returns the task instance specified by task_id for this dag run
:param task_id: the task id
:param session: Sqlalchemy ORM Session
.. py:method:: get_dag(self)
Returns the Dag associated with this DagRun.
:return: DAG
.. py:method:: get_previous_dagrun(self, state = None, session = NEW_SESSION)
The previous DagRun, if there is one
.. py:method:: get_previous_scheduled_dagrun(self, session = NEW_SESSION)
The previous, SCHEDULED DagRun, if there is one
.. py:method:: update_state(self, session = NEW_SESSION, execute_callbacks = True)
Determines the overall state of the DagRun based on the state
of its TaskInstances.
:param session: Sqlalchemy ORM Session
:param execute_callbacks: Should dag callbacks (success/failure, SLA etc) be invoked
directly (default: true) or recorded as a pending request in the ``callback`` property
:return: Tuple containing tis that can be scheduled in the current loop & `callback` that
needs to be executed
.. py:method:: task_instance_scheduling_decisions(self, session = NEW_SESSION)
.. py:method:: verify_integrity(self, session = NEW_SESSION)
Verifies the DagRun by checking for removed tasks or tasks that are not in the
database yet. It will set state to removed or add the task if required.
:param session: Sqlalchemy ORM Session
.. py:method:: get_run(session, dag_id, execution_date)
:staticmethod:
Get a single DAG Run
:meta private:
:param session: Sqlalchemy ORM Session
:param dag_id: DAG ID
:param execution_date: execution date
:return: DagRun corresponding to the given dag_id and execution date
if one exists. None otherwise.
:rtype: airflow.models.DagRun
.. py:method:: is_backfill(self)
:property:
.. py:method:: get_latest_runs(cls, session=None)
:classmethod:
Returns the latest DagRun for each DAG
.. py:method:: schedule_tis(self, schedulable_tis, session = NEW_SESSION)
Set the given task instances in to the scheduled state.
Each element of ``schedulable_tis`` should have it's ``task`` attribute already set.
Any EmptyOperator without callbacks is instead set straight to the success state.
All the TIs should belong to this DagRun, but this code is in the hot-path, this is not checked -- it
is the caller's responsibility to call this function only with TIs from a single dag run.
.. py:method:: get_log_filename_template(self, *, session = NEW_SESSION)