Python Airflow custom sensor – which methods to implement

Question:

I’m trying to write a custom sensor that inherits BaseSensorOperator and SSHOperator. in the sensor body I override poke and execute method.

  class mysensor (BaseSensorOperator,SSHOperator):
      template_fields = ("my_param")
      def __init__ (
          self,
          my_param = None,
          *args,
          **kawags):
      self.my_param = my_param
      super().__init__(
          command = "some bash command",
          ssh_conn_id = "some connection"
          *args,
          **kwargs)

def poke(self, context):
    ... (implemented poke)
def execute():
    ...(implemented execute)
          
Asked By: user3735871

||

Answers:

Custom sensors are required to implement only the poke function. You should not override the execute function (unless you really know what you are doing). The execute function is implemented in BaseSensorOperator and that is what gives sensors their capabilities.

In your case you should not use SSHOperator, you should use SSHHook directly.

Your Sensor should look like:

from airflow.providers.ssh.hooks.ssh import SSHHook

class Mysensor(BaseSensorOperator):
    ...

    def poke(self,context):
      hook = SSHHook(...)
      # add your sensor logic here
Answered By: Elad Kalif