title: Does an Airflow operator need to return anything in order to function correctly?
body: <p>In Airflow, if I create a custom operator class, and use it in a dag, must it actually return anything?</p>
  <p>Couple of examples, let's say I create sensor operator (inherits from <code>base_sensor_operator</code>) which checks every 5 min for the existence of a file somewhere. Similar to <code>check_for_wildcard_key()</code> and how it returns True or False. Does any method I create have to actually have a return statement with this True/False value in order to function? Will the scheduler know to retry this task without a return statement?</p>
  <p>Another example is if I create a custom operator (non sensor) that executes SQL code in a database that isn't as common, so I need to create my own operator to connect to that database. So let's say I am using the method <code>execute_SQL()</code> inside my custom operator class. I need not have a return value, right? Since the operator object itself inside of a dag file will simply just &quot;run&quot;, I don't need to return anything?</p>
  <p>I understand sometimes we have a use for <code>xcom_push</code> and <code>xcom_pull</code>, so it might be good to have return values in case we need to send/receive results between tasks. Is it <em>good practice</em> to return something even if it might not be used? Will custom operator classes work without return statements?</p>