:mod:`airflow.contrib.sensors.ftp_sensor`
=========================================

.. py:module:: airflow.contrib.sensors.ftp_sensor


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

.. py:class:: FTPSensor(path, ftp_conn_id='ftp_default', fail_on_transient_errors=True, *args, **kwargs)

   Bases: :class:`airflow.sensors.base_sensor_operator.BaseSensorOperator`

   Waits for a file or directory to be present on FTP.

   .. attribute:: template_fields
      :annotation: = ['path']

      Errors that are transient in nature, and where action can be retried


   .. attribute:: transient_errors
      :annotation: = [421, 425, 426, 434, 450, 451, 452]

      

   .. attribute:: error_code_pattern
      

      

   
   .. method:: _create_hook(self)

      Return connection hook.



   
   .. method:: _get_error_code(self, e)

      Extract error code from ftp exception



   
   .. method:: poke(self, context)




.. py:class:: FTPSSensor

   Bases: :class:`airflow.contrib.sensors.ftp_sensor.FTPSensor`

   Waits for a file or directory to be present on FTP over SSL.

   
   .. method:: _create_hook(self)

      Return connection hook.




