擅长:python、mysql、java
<p>要通过flow找到,<code>create_dag()</code>返回的DAG对象必须位于<code>foo_v1.py</code>模块的全局命名空间中。在全局命名空间中放置DAG的一种方法是将其指定给模块级变量:</p>
<pre><code>from common.common import create_dag
dag = create_dag('foo', 'v1')
</code></pre>
<p>另一种方法是使用<a href="https://docs.python.org/3/library/functions.html#globals" rel="nofollow noreferrer">^{<cd3>}</a>更新全局命名空间:</p>
^{pr2}$
<p>后者看起来可能是一种过度杀戮,但它对<a href="https://airflow.apache.org/faq.html#how-can-i-create-dags-dynamically" rel="nofollow noreferrer">creating multiple DAGs dynamically</a>很有用。例如,在For循环中:</p>
<pre><code>for i in range(10):
globals()[f'foo_v{i}'] = create_dag('foo', f'v{i}')
</code></pre>
<p><em>注意:</em>任何放在<code>$AIRFLOW_HOME/dags</code>中的<code>*.py</code>文件(即使在子目录中,例如在您的例子中是<code>common</code>)都将被气流解析。如果您不想这样做,可以使用<a href="https://airflow.apache.org/docs/stable/concepts.html#airflowignore" rel="nofollow noreferrer">^{<cd7>}</a>或<a href="https://airflow.apache.org/concepts.html#packaged-dags" rel="nofollow noreferrer">packaged DAGs</a>。在</p>