|
| 1 | +<!DOCTYPE html> |
| 2 | +<html> |
| 3 | + <head> |
| 4 | + |
| 5 | + |
| 6 | + <meta charset="utf-8"> |
| 7 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| 8 | + <meta name="viewport" content="width=device-width, initial-scale=1"> |
| 9 | + |
| 10 | + <meta property="og:title" content="What's in Airflow's context dictionary?" /> |
| 11 | + <meta property="og:type" content="website" /> |
| 12 | + <meta property="og:url" content="https://explodinglabs.github.io/" /> |
| 13 | + <meta property="og:image" content="https://explodinglabs.github.io/assets/opengraph.png" /> |
| 14 | + <meta property="og:image:secure_url" content="https://explodinglabs.github.io/assets/opengraph.png" /> |
| 15 | + <meta property="og:image:type" content="image/png" /> |
| 16 | + <meta property="og:image:width" content="1200" /> |
| 17 | + <meta property="og:image:height" content="630" /> |
| 18 | + <meta property="og:image:alt" content="Composition in architecture" /> |
| 19 | + |
| 20 | + <link rel="stylesheet" href="/posts/main.css"> |
| 21 | + <link rel="alternate" type="application/rss+xml" title="Exploding Labs Blog" href="https://explodinglabs.com/posts/feed.xml"> |
| 22 | + <link rel="author" href="https://plus.google.com/u/0/110235318020270619650?rel=author" /> |
| 23 | + |
| 24 | + <link rel="icon" type="image/png" href="/assets/favicon-16x16.png?v=2" sizes="16x16"> |
| 25 | + <link rel="icon" type="image/png" href="/assets/favicon-32x32.png?v=2" sizes="32x32"> |
| 26 | + <link rel="icon" type="image/png" href="/assets/favicon-96x96.png?v=2" sizes="96x96"> |
| 27 | + |
| 28 | + <link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png?v=2"> |
| 29 | + <link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png?v=2"> |
| 30 | + <link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png?v=2"> |
| 31 | + <link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png?v=2"> |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | + <!-- Begin Jekyll SEO tag v2.7.1 --> |
| 36 | +<title>What’s in Airflow’s context dictionary? | Exploding Labs Blog</title> |
| 37 | +<meta name="generator" content="Jekyll v4.2.0" /> |
| 38 | +<meta property="og:title" content="What’s in Airflow’s context dictionary?" /> |
| 39 | +<meta name="author" content="Beau Barker" /> |
| 40 | +<meta property="og:locale" content="en_AU" /> |
| 41 | +<meta name="description" content="Showing the contents of the “context” object, which is available in an Operator’s execute method, or a PythonOperator’s function definition." /> |
| 42 | +<meta property="og:description" content="Showing the contents of the “context” object, which is available in an Operator’s execute method, or a PythonOperator’s function definition." /> |
| 43 | +<link rel="canonical" href="https://explodinglabs.com/posts/airflow/execute-context" /> |
| 44 | +<meta property="og:url" content="https://explodinglabs.com/posts/airflow/execute-context" /> |
| 45 | +<meta property="og:site_name" content="Exploding Labs Blog" /> |
| 46 | +<meta property="og:image" content="https://explodinglabs.com/posts/assets/airflow-wide.png" /> |
| 47 | +<meta property="og:type" content="article" /> |
| 48 | +<meta property="article:published_time" content="2017-12-13T00:00:00+00:00" /> |
| 49 | +<meta name="twitter:card" content="summary_large_image" /> |
| 50 | +<meta property="twitter:image" content="https://explodinglabs.com/posts/assets/airflow-wide.png" /> |
| 51 | +<meta property="twitter:title" content="What’s in Airflow’s context dictionary?" /> |
| 52 | +<script type="application/ld+json"> |
| 53 | +{"description":"Showing the contents of the “context” object, which is available in an Operator’s execute method, or a PythonOperator’s function definition.","mainEntityOfPage":{"@type":"WebPage","@id":"https://explodinglabs.com/posts/airflow/execute-context"},"image":"https://explodinglabs.com/posts/assets/airflow-wide.png","headline":"What’s in Airflow’s context dictionary?","dateModified":"2025-07-15T23:00:51+00:00","datePublished":"2017-12-13T00:00:00+00:00","url":"https://explodinglabs.com/posts/airflow/execute-context","author":{"@type":"Person","name":"Beau Barker"},"@type":"BlogPosting","@context":"https://schema.org"}</script> |
| 54 | +<!-- End Jekyll SEO tag --> |
| 55 | + |
| 56 | + </head> |
| 57 | + <body> |
| 58 | + |
| 59 | + |
| 60 | + |
| 61 | + |
| 62 | +<nav> |
| 63 | + <div id="logo"> |
| 64 | + <a href="/">Exploding Labs Blog<!--img src="/assets/composed.png" /--></a> |
| 65 | + </div> |
| 66 | + <div id="categories"> |
| 67 | + <!--a href="/">All</a> <span>(73)</span--> |
| 68 | + <a href="/haskell/">Haskell</a> <span>(2)</span> |
| 69 | + <a href="/jsonrpc/">JSON-RPC</a> <span>(16)</span> |
| 70 | + <a href="/python/">Python</a> <span>(19)</span> |
| 71 | + <a href="/airflow/">Airflow</a> <span>(6)</span> |
| 72 | + </div> |
| 73 | +</nav> |
| 74 | + |
| 75 | +<main> |
| 76 | + |
| 77 | + <article itemscope itemtype="http://schema.org/BlogPosting"> |
| 78 | + <header> |
| 79 | + <h1>What's in Airflow's context dictionary?</h1> |
| 80 | + <div class="post-meta"> |
| 81 | + <time datetime="2017-12-13T00:00:00+00:00" itemprop="datePublished"> |
| 82 | + Beau Barker, <time>Dec 13, 2017</time>. |
| 83 | + |
| 84 | + Updated <time>Jul 15, 2025</time>. |
| 85 | + |
| 86 | + <a href="https://github.com/explodinglabs/explodinglabs.github.io/edit/main/docs/_posts/airflow/2017-12-13-airflows-execute-context.markdown"> |
| 87 | + ✎ |
| 88 | + </a> |
| 89 | + </time> |
| 90 | + </div> |
| 91 | + </header> |
| 92 | + <div class="wide-logos"> |
| 93 | + <p><img src="/assets/airflow.png" alt="airflow" /></p> |
| 94 | +</div> |
| 95 | + |
| 96 | +<p>Airflow’s context dictionary can be found in the <code class="language-plaintext highlighter-rouge">get_template_context</code> method, |
| 97 | +in Airflow’s |
| 98 | +<a href="https://github.com/databricks/incubator-airflow/blob/master/airflow/models.py">models.py</a>.</p> |
| 99 | + |
| 100 | +<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span> |
| 101 | + <span class="s">'dag'</span><span class="p">:</span> <span class="n">task</span><span class="p">.</span><span class="n">dag</span><span class="p">,</span> |
| 102 | + <span class="s">'ds'</span><span class="p">:</span> <span class="n">ds</span><span class="p">,</span> |
| 103 | + <span class="s">'ds_nodash'</span><span class="p">:</span> <span class="n">ds_nodash</span><span class="p">,</span> |
| 104 | + <span class="s">'ts'</span><span class="p">:</span> <span class="n">ts</span><span class="p">,</span> |
| 105 | + <span class="s">'ts_nodash'</span><span class="p">:</span> <span class="n">ts_nodash</span><span class="p">,</span> |
| 106 | + <span class="s">'yesterday_ds'</span><span class="p">:</span> <span class="n">yesterday_ds</span><span class="p">,</span> |
| 107 | + <span class="s">'yesterday_ds_nodash'</span><span class="p">:</span> <span class="n">yesterday_ds_nodash</span><span class="p">,</span> |
| 108 | + <span class="s">'tomorrow_ds'</span><span class="p">:</span> <span class="n">tomorrow_ds</span><span class="p">,</span> |
| 109 | + <span class="s">'tomorrow_ds_nodash'</span><span class="p">:</span> <span class="n">tomorrow_ds_nodash</span><span class="p">,</span> |
| 110 | + <span class="s">'END_DATE'</span><span class="p">:</span> <span class="n">ds</span><span class="p">,</span> |
| 111 | + <span class="s">'end_date'</span><span class="p">:</span> <span class="n">ds</span><span class="p">,</span> |
| 112 | + <span class="s">'dag_run'</span><span class="p">:</span> <span class="n">dag_run</span><span class="p">,</span> |
| 113 | + <span class="s">'run_id'</span><span class="p">:</span> <span class="n">run_id</span><span class="p">,</span> |
| 114 | + <span class="s">'execution_date'</span><span class="p">:</span> <span class="bp">self</span><span class="p">.</span><span class="n">execution_date</span><span class="p">,</span> |
| 115 | + <span class="s">'prev_execution_date'</span><span class="p">:</span> <span class="n">prev_execution_date</span><span class="p">,</span> |
| 116 | + <span class="s">'next_execution_date'</span><span class="p">:</span> <span class="n">next_execution_date</span><span class="p">,</span> |
| 117 | + <span class="s">'latest_date'</span><span class="p">:</span> <span class="n">ds</span><span class="p">,</span> |
| 118 | + <span class="s">'macros'</span><span class="p">:</span> <span class="n">macros</span><span class="p">,</span> |
| 119 | + <span class="s">'params'</span><span class="p">:</span> <span class="n">params</span><span class="p">,</span> |
| 120 | + <span class="s">'tables'</span><span class="p">:</span> <span class="n">tables</span><span class="p">,</span> |
| 121 | + <span class="s">'task'</span><span class="p">:</span> <span class="n">task</span><span class="p">,</span> |
| 122 | + <span class="s">'task_instance'</span><span class="p">:</span> <span class="bp">self</span><span class="p">,</span> |
| 123 | + <span class="s">'ti'</span><span class="p">:</span> <span class="bp">self</span><span class="p">,</span> |
| 124 | + <span class="s">'task_instance_key_str'</span><span class="p">:</span> <span class="n">ti_key_str</span><span class="p">,</span> |
| 125 | + <span class="s">'conf'</span><span class="p">:</span> <span class="n">configuration</span><span class="p">,</span> |
| 126 | + <span class="s">'test_mode'</span><span class="p">:</span> <span class="bp">self</span><span class="p">.</span><span class="n">test_mode</span><span class="p">,</span> |
| 127 | + <span class="s">'var'</span><span class="p">:</span> <span class="p">{</span> |
| 128 | + <span class="s">'value'</span><span class="p">:</span> <span class="n">VariableAccessor</span><span class="p">(),</span> |
| 129 | + <span class="s">'json'</span><span class="p">:</span> <span class="n">VariableJsonAccessor</span><span class="p">()</span> |
| 130 | + <span class="p">}</span> |
| 131 | +<span class="p">}</span> |
| 132 | +</code></pre></div></div> |
| 133 | + |
| 134 | +<p>An explanation of each item is found in the documentation under |
| 135 | +<a href="https://airflow.apache.org/docs/stable/macros-ref.html">Macros</a>.</p> |
| 136 | + |
| 137 | +<p>Incidentally, you can generate the context from a TaskInstance.</p> |
| 138 | + |
| 139 | +<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">context</span> <span class="o">=</span> <span class="n">TaskInstance</span><span class="p">(</span> |
| 140 | + <span class="n">task</span><span class="o">=</span><span class="n">task</span><span class="p">,</span> |
| 141 | + <span class="n">execution_date</span><span class="o">=</span><span class="n">datetime</span><span class="p">.</span><span class="n">now</span><span class="p">()</span> |
| 142 | +<span class="p">).</span><span class="n">get_template_context</span><span class="p">()</span> |
| 143 | +</code></pre></div></div> |
| 144 | + |
| 145 | + <footer> |
| 146 | + <a href="/airflow">More Airflow posts</a> |
| 147 | + </footer> |
| 148 | + </article> |
| 149 | + |
| 150 | + |
| 151 | + |
| 152 | +</main> |
| 153 | + |
| 154 | + </body> |
| 155 | +</html> |
0 commit comments