:mod:`airflow.models.pool`
==========================

.. py:module:: airflow.models.pool


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

.. py:class:: Pool

   Bases: :class:`airflow.models.base.Base`

   .. attribute:: __tablename__
      :annotation: = slot_pool

      

   .. attribute:: id
      

      

   .. attribute:: pool
      

      

   .. attribute:: slots
      

      

   .. attribute:: description
      

      

   .. attribute:: DEFAULT_POOL_NAME
      :annotation: = default_pool

      

   
   .. method:: __repr__(self)



   
   .. staticmethod:: get_pool(pool_name, session=None)



   
   .. staticmethod:: get_default_pool(session=None)



   
   .. method:: to_json(self)



   
   .. method:: occupied_slots(self, session)

      Returns the number of slots used by running/queued tasks at the moment.



   
   .. method:: used_slots(self, session)

      Returns the number of slots used by running tasks at the moment.



   
   .. method:: queued_slots(self, session)

      Returns the number of slots used by queued tasks at the moment.



   
   .. method:: open_slots(self, session)

      Returns the number of slots open at the moment




