:py:mod:`airflow.executors.sequential_executor`
===============================================

.. py:module:: airflow.executors.sequential_executor

.. autoapi-nested-parse::

   SequentialExecutor

   .. seealso::
       For more information on how the SequentialExecutor works, take a look at the guide:
       :ref:`executor:SequentialExecutor`



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.executors.sequential_executor.SequentialExecutor




.. py:class:: SequentialExecutor

   Bases: :py:obj:`airflow.executors.base_executor.BaseExecutor`

   This executor will only run one task instance at a time, can be used
   for debugging. It is also the only executor that can be used with sqlite
   since sqlite doesn't support multiple connections.

   Since we want airflow to work out of the box, it defaults to this
   SequentialExecutor alongside sqlite as you first install it.

   .. py:method:: execute_async(self, key, command, queue = None, executor_config = None)

      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:: sync(self)

      Sync will get called periodically by the heartbeat method.
      Executors should override this to perform gather statuses.


   .. py:method:: end(self)

      End the executor.


   .. py:method:: terminate(self)

      Terminate the executor is not doing anything.



