作爲一個氣流和Python新手,甚至不知道我是否問正確的問題,但無論如何要問。 我在CentOS系統上配置了氣流。使用遠程MySql實例作爲後端。在我的代碼,需要得到一些變量,代碼如下所示:氣流數據庫會話不提供任何環境可變
import os
from airflow.models import Variable
print(os.environ['SHELL'])
local_env['SHELL'] = Variable.get('SHELL')
而且我得到了以下錯誤:
Traceback (most recent call last): File "test2.py", line 5, in local_env['SHELL'] = Variable.get('SHELL') File "/com/work/airflowenv/lib/python2.7/site-packages/airflow/utils/db.py", line 53, in wrapper result = func(*args, **kwargs) File "/com/work/airflowenv/lib/python2.7/site-packages/airflow/models.py", line 3134, in get raise ValueError('Variable {} does not exist'.format(key)) ValueError: Variable SHELL does not exist
它是Variable.get()方法引發異常在models.py中的這段代碼中:
@classmethod
@provide_session
def get(cls, key, default_var=None, deserialize_json=False, session=None):
obj = session.query(cls).filter(cls.key == key).first()
if obj is None:
if default_var is not None:
return default_var
else:
raise ValueError('Variable {} does not exist'.format(key))
其中session.query已經產生無。不太明白會話是如何注入的。以及爲什麼這些會話變量沒有設置。我們應該在遠程MySQL實例上設置一些東西嗎?
順便說一句,我們有另一臺機器上的另一個相同的氣流實例與本地mysql實例。並運行我獨自提供支架上的文字沒有問題:
[2016-09-27 01:54:48,341] {init.py:36} INFO - Using executor
LocalExecutor
/bin/bash /bin/bash
任何設置氣流時,我錯過了什麼? 謝謝,
嘿,我想出了什麼是錯的,在氣流後端數據庫中,有一個稱爲變量的表需要手動填充。由於我沒有將這張表作爲引導步驟填充,因此查詢它們會讓我得到空的數據集。 此外,如果有一些API可以手動填充變量,而無需再次初始化db,那將會很不錯。 由於「變量」表是氣流後端數據庫中的默認表格之一,因此我們應該能夠在初始化數據庫時分配變量。但我無法在任何文件中找到它。有人可以指出我在哪裏找到它? –