blob: 202970cb989acba062ea4d41ec7a8da23d036d34 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>airflow.sensors.base_sensor_operator &mdash; Airflow Documentation</title>
<script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<script type="text/javascript" src="../../../../_static/js/theme.js"></script>
<link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../../genindex.html" />
<link rel="search" title="Search" href="../../../../search.html" />
<link rel="next" title="airflow.sensors.external_task_sensor" href="../external_task_sensor/index.html" />
<link rel="prev" title="airflow.sensors" href="../index.html" />
<script>
document.addEventListener('DOMContentLoaded', function() {
var el = document.getElementById('changelog');
if (el !== null ) {
// [AIRFLOW-...]
el.innerHTML = el.innerHTML.replace(
/\[(AIRFLOW-[\d]+)\]/g,
`<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
);
// (#...)
el.innerHTML = el.innerHTML.replace(
/\(#([\d]+)\)/g,
`<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
);
};
})
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-140539454-1']);
_gaq.push(['_trackPageview']);
</script>
<style>
.example-header {
position: relative;
background: #9AAA7A;
padding: 8px 16px;
margin-bottom: 0;
}
.example-header--with-button {
padding-right: 166px;
}
.example-header:after{
content: '';
display: table;
clear: both;
}
.example-title {
display:block;
padding: 4px;
margin-right: 16px;
color: white;
overflow-x: auto;
}
.example-header-button {
top: 8px;
right: 16px;
position: absolute;
}
.example-header + .highlight-python {
margin-top: 0 !important;
}
.viewcode-button {
display: inline-block;
padding: 8px 16px;
border: 0;
margin: 0;
outline: 0;
border-radius: 2px;
-webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
color: #404040;
background-color: #e7e7e7;
cursor: pointer;
font-size: 16px;
font-weight: 500;
line-height: 1;
text-decoration: none;
text-overflow: ellipsis;
overflow: hidden;
text-transform: uppercase;
-webkit-transition: background-color .2s;
transition: background-color .2s;
vertical-align: middle;
white-space: nowrap;
}
.viewcode-button:visited {
color: #404040;
}
.viewcode-button:hover, .viewcode-button:focus {
color: #404040;
background-color: #d6d6d6;
}
</style>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../../index.html" class="icon icon-home"> Airflow
</a>
<div class="version">
1.10.5
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../../project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../start.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../cli.html">Command Line Interface Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../api.html">REST API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../macros.html">Macros reference</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../../index.html">Python API Reference</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="../../../index.html#operators">Operators</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../../../index.html#baseoperator">BaseOperator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../index.html#basesensoroperator">BaseSensorOperator</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../../../index.html#operators-packages">Operators packages</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="../../operators/index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.operators</span></code></a></li>
<li class="toctree-l4 current"><a class="reference internal" href="../index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.sensors</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../contrib/operators/index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.contrib.operators</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../contrib/sensors/index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.contrib.sensors</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#hooks">Hooks</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#executors">Executors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#models">Models</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#core-and-community-package">Core and community package</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../../privacy_notice.html">Privacy Notice</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../../index.html">Airflow</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../../index.html">Docs</a> &raquo;</li>
<li><a href="../../../index.html">Python API Reference</a> &raquo;</li>
<li><a href="../index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.sensors</span></code></a> &raquo;</li>
<li><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.sensors.base_sensor_operator</span></code></li>
<li class="wy-breadcrumbs-aside">
<a href="../../../../_sources/_api/airflow/sensors/base_sensor_operator/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="module-airflow.sensors.base_sensor_operator">
<span id="airflow-sensors-base-sensor-operator"></span><h1><a class="reference internal" href="#module-airflow.sensors.base_sensor_operator" title="airflow.sensors.base_sensor_operator"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.sensors.base_sensor_operator</span></code></a><a class="headerlink" href="#module-airflow.sensors.base_sensor_operator" title="Permalink to this headline"></a></h1>
<div class="section" id="module-contents">
<h2>Module Contents<a class="headerlink" href="#module-contents" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator">
<em class="property">class </em><code class="sig-prename descclassname">airflow.sensors.base_sensor_operator.</code><code class="sig-name descname">BaseSensorOperator</code><span class="sig-paren">(</span><em class="sig-param">poke_interval=60</em>, <em class="sig-param">timeout=60 * 60 * 24 * 7</em>, <em class="sig-param">soft_fail=False</em>, <em class="sig-param">mode='poke'</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="../../models/index.html#airflow.models.BaseOperator" title="airflow.models.BaseOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.models.BaseOperator</span></code></a>, <a class="reference internal" href="../../models/index.html#airflow.models.SkipMixin" title="airflow.models.SkipMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.models.SkipMixin</span></code></a></p>
<p>Sensor operators are derived from this class and inherit these attributes.</p>
<p>Sensor operators keep executing at a time interval and succeed when
a criteria is met and fail if and when they time out.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>soft_fail</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.7)"><em>bool</em></a>) – Set to true to mark the task as SKIPPED on failure</p></li>
<li><p><strong>poke_interval</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.7)"><em>int</em></a>) – Time in seconds that the job should wait in
between each tries</p></li>
<li><p><strong>timeout</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.7)"><em>int</em></a>) – Time, in seconds before the task times out and fails.</p></li>
<li><p><strong>mode</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) – How the sensor operates.
Options are: <code class="docutils literal notranslate"><span class="pre">{</span> <span class="pre">poke</span> <span class="pre">|</span> <span class="pre">reschedule</span> <span class="pre">}</span></code>, default is <code class="docutils literal notranslate"><span class="pre">poke</span></code>.
When set to <code class="docutils literal notranslate"><span class="pre">poke</span></code> the sensor is taking up a worker slot for its
whole execution time and sleeps between pokes. Use this mode if the
expected runtime of the sensor is short or if a short poke interval
is required. Note that the sensor will hold onto a worker slot and
a pool slot for the duration of the sensor’s runtime in this mode.
When set to <code class="docutils literal notranslate"><span class="pre">reschedule</span></code> the sensor task frees the worker slot when
the criteria is not yet met and it’s rescheduled at a later time. Use
this mode if the time before the criteria is met is expected to be
quite long. The poke interval should be more than one minute to
prevent too much load on the scheduler.</p></li>
</ul>
</dd>
</dl>
<dl class="attribute">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator.ui_color">
<code class="sig-name descname">ui_color</code><em class="property"> = #e6f1f2</em><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator.ui_color"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator.ui_color" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator.valid_modes">
<code class="sig-name descname">valid_modes</code><em class="property"> = ['poke', 'reschedule']</em><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator.valid_modes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator.valid_modes" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator.reschedule">
<code class="sig-name descname">reschedule</code><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator.reschedule"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator.reschedule" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator.deps">
<code class="sig-name descname">deps</code><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator.deps"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator.deps" title="Permalink to this definition"></a></dt>
<dd><p>Adds one additional dependency for all sensor operators that
checks if a sensor task instance can be rescheduled.</p>
</dd></dl>
<dl class="method">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator._validate_input_values">
<code class="sig-name descname">_validate_input_values</code><span class="sig-paren">(</span><em class="sig-param">self</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator._validate_input_values"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator._validate_input_values" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator.poke">
<code class="sig-name descname">poke</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">context</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator.poke"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator.poke" title="Permalink to this definition"></a></dt>
<dd><p>Function that the sensors defined while deriving this class should
override.</p>
</dd></dl>
<dl class="method">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator.execute">
<code class="sig-name descname">execute</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">context</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator.execute"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.sensors.base_sensor_operator.BaseSensorOperator._do_skip_downstream_tasks">
<code class="sig-name descname">_do_skip_downstream_tasks</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">context</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/sensors/base_sensor_operator.html#BaseSensorOperator._do_skip_downstream_tasks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.sensors.base_sensor_operator.BaseSensorOperator._do_skip_downstream_tasks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../external_task_sensor/index.html" class="btn btn-neutral float-right" title="airflow.sensors.external_task_sensor" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="../index.html" class="btn btn-neutral float-left" title="airflow.sensors" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
<div class="footer">This page uses <a href="https://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com. Check our
<a href="../../../../privacy_notice.html">Privacy Policy</a>
for more details.
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
var nodes = document.documentElement.childNodes;
var i = -1;
var node;
do {
i++;
node = nodes[i]
} while(node.nodeType !== Node.ELEMENT_NODE);
node.appendChild(ga);
})();
</script>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>