:py:mod:`airflow.providers.cncf.kubernetes.utils.xcom_sidecar`
==============================================================

.. py:module:: airflow.providers.cncf.kubernetes.utils.xcom_sidecar

.. autoapi-nested-parse::

   This module handles all xcom functionality for the KubernetesPodOperator
   by attaching a sidecar container that blocks the pod from completing until
   Airflow has pulled result data into the worker for xcom serialization.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.cncf.kubernetes.utils.xcom_sidecar.PodDefaults



Functions
~~~~~~~~~

.. autoapisummary::

   airflow.providers.cncf.kubernetes.utils.xcom_sidecar.add_xcom_sidecar



.. py:class:: PodDefaults

   Static defaults for Pods

   .. py:attribute:: XCOM_MOUNT_PATH
      :annotation: = /airflow/xcom

      

   .. py:attribute:: SIDECAR_CONTAINER_NAME
      :annotation: = airflow-xcom-sidecar

      

   .. py:attribute:: XCOM_CMD
      :annotation: = trap "exit 0" INT; while true; do sleep 1; done;

      

   .. py:attribute:: VOLUME_MOUNT
      

      

   .. py:attribute:: VOLUME
      

      

   .. py:attribute:: SIDECAR_CONTAINER
      

      


.. py:function:: add_xcom_sidecar(pod)

   Adds sidecar


