blob: 3ccc6c9dc5f7e1b03b607b5a4bf72a02e2ff17e6 [file] [log] [blame]
:py:mod:`airflow.executors.base_executor`
=========================================
.. py:module:: airflow.executors.base_executor
.. autoapi-nested-parse::
Base executor - this is the base class for all the implemented executors.
Module Contents
---------------
Classes
~~~~~~~
.. autoapisummary::
airflow.executors.base_executor.BaseExecutor
Attributes
~~~~~~~~~~
.. autoapisummary::
airflow.executors.base_executor.PARALLELISM
airflow.executors.base_executor.NOT_STARTED_MESSAGE
airflow.executors.base_executor.QUEUEING_ATTEMPTS
airflow.executors.base_executor.CommandType
airflow.executors.base_executor.QueuedTaskInstanceType
airflow.executors.base_executor.EventBufferValueType
.. py:data:: PARALLELISM
:annotation: :int
.. py:data:: NOT_STARTED_MESSAGE
:annotation: = The executor should be started first!
.. py:data:: QUEUEING_ATTEMPTS
:annotation: = 5
.. py:data:: CommandType
.. py:data:: QueuedTaskInstanceType
.. py:data:: EventBufferValueType
.. py:class:: BaseExecutor(parallelism: int = PARALLELISM)
Bases: :py:obj:`airflow.utils.log.logging_mixin.LoggingMixin`
Class to derive in order to interface with executor-type systems
like Celery, Kubernetes, Local, Sequential and the likes.
:param parallelism: how many jobs should run at one time. Set to
``0`` for infinity
.. py:attribute:: job_id
:annotation: :Optional[str]
.. py:method:: __repr__(self)
Return repr(self).
.. py:method:: start(self)
Executors may need to get things started.
.. py:method:: queue_command(self, task_instance: airflow.models.taskinstance.TaskInstance, command: CommandType, priority: int = 1, queue: Optional[str] = None)
Queues command to task
.. py:method:: queue_task_instance(self, task_instance: airflow.models.taskinstance.TaskInstance, mark_success: bool = False, pickle_id: Optional[str] = None, ignore_all_deps: bool = False, ignore_depends_on_past: bool = False, ignore_task_deps: bool = False, ignore_ti_state: bool = False, pool: Optional[str] = None, cfg_path: Optional[str] = None) -> None
Queues task instance.
.. py:method:: has_task(self, task_instance: airflow.models.taskinstance.TaskInstance) -> bool
Checks if a task is either queued or running in this executor.
:param task_instance: TaskInstance
:return: True if the task is known to this executor
.. py:method:: sync(self) -> None
Sync will get called periodically by the heartbeat method.
Executors should override this to perform gather statuses.
.. py:method:: heartbeat(self) -> None
Heartbeat sent to trigger new jobs.
.. py:method:: order_queued_tasks_by_priority(self) -> List[Tuple[airflow.models.taskinstance.TaskInstanceKey, QueuedTaskInstanceType]]
Orders the queued tasks by priority.
:return: List of tuples from the queued_tasks according to the priority.
.. py:method:: trigger_tasks(self, open_slots: int) -> None
Triggers tasks
:param open_slots: Number of open slots
.. py:method:: change_state(self, key: airflow.models.taskinstance.TaskInstanceKey, state: str, info=None) -> None
Changes state of the task.
:param info: Executor information for the task instance
:param key: Unique key for the task instance
:param state: State to set for the task.
.. py:method:: fail(self, key: airflow.models.taskinstance.TaskInstanceKey, info=None) -> None
Set fail state for the event.
:param info: Executor information for the task instance
:param key: Unique key for the task instance
.. py:method:: success(self, key: airflow.models.taskinstance.TaskInstanceKey, info=None) -> None
Set success state for the event.
:param info: Executor information for the task instance
:param key: Unique key for the task instance
.. py:method:: get_event_buffer(self, dag_ids=None) -> Dict[airflow.models.taskinstance.TaskInstanceKey, EventBufferValueType]
Returns and flush the event buffer. In case dag_ids is specified
it will only return and flush events for the given dag_ids. Otherwise
it returns and flushes all events.
:param dag_ids: to dag_ids to return events for, if None returns all
:return: a dict of events
.. py:method:: execute_async(self, key: airflow.models.taskinstance.TaskInstanceKey, command: CommandType, queue: Optional[str] = None, executor_config: Optional[Any] = None) -> None
:abstractmethod:
This method will execute the command asynchronously.
:param key: Unique key for the task instance
:param command: Command to run
:param queue: name of the queue
:param executor_config: Configuration passed to the executor.
.. py:method:: end(self) -> None
:abstractmethod:
This method is called when the caller is done submitting job and
wants to wait synchronously for the job submitted previously to be
all done.
.. py:method:: terminate(self)
:abstractmethod:
This method is called when the daemon receives a SIGTERM
.. py:method:: try_adopt_task_instances(self, tis: List[airflow.models.taskinstance.TaskInstance]) -> List[airflow.models.taskinstance.TaskInstance]
Try to adopt running task instances that have been abandoned by a SchedulerJob dying.
Anything that is not adopted will be cleared by the scheduler (and then become eligible for
re-scheduling)
:return: any TaskInstances that were unable to be adopted
:rtype: list[airflow.models.TaskInstance]
.. py:method:: slots_available(self)
:property:
Number of new tasks this executor instance can accept
.. py:method:: validate_command(command: List[str]) -> None
:staticmethod:
Check if the command to execute is airflow command
.. py:method:: debug_dump(self)
Called in response to SIGUSR2 by the scheduler