:py:mod:`airflow.providers.google.cloud.triggers.cloud_composer`
================================================================

.. py:module:: airflow.providers.google.cloud.triggers.cloud_composer


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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.triggers.cloud_composer.CloudComposerExecutionTrigger




Attributes
~~~~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.triggers.cloud_composer.BaseTrigger


.. py:data:: BaseTrigger
   

   

.. py:class:: CloudComposerExecutionTrigger(project_id, region, operation_name, gcp_conn_id = 'google_cloud_default', impersonation_chain = None, delegate_to = None, pooling_period_seconds = 30)

   Bases: :py:obj:`airflow.triggers.base.BaseTrigger`

   The trigger handles the async communication with the Google Cloud Composer

   .. py:method:: serialize(self)

      Returns the information needed to reconstruct this Trigger.

      :return: Tuple of (class path, keyword arguments needed to re-instantiate).


   .. py:method:: run(self)
      :async:

      Runs the trigger in an asynchronous context.

      The trigger should yield an Event whenever it wants to fire off
      an event, and return None if it is finished. Single-event triggers
      should thus yield and then immediately return.

      If it yields, it is likely that it will be resumed very quickly,
      but it may not be (e.g. if the workload is being moved to another
      triggerer process, or a multi-event trigger was being used for a
      single-event task defer).

      In either case, Trigger classes should assume they will be persisted,
      and then rely on cleanup() being called when they are no longer needed.



