docs中描述的Airflow版本1.8密码身份验证设置在步骤
失败*********Calling transformStream************
ram
sam
Subscriber to Transformed AlterMap: SAM
kam
Subscriber to Transformed AlterMap: KAM
dam
Subscriber to Transformed AlterMap: DAM
-------------------------------------
*********Calling composeStream************
ram
sam
Subscriber to Composed AlterMap :SAM
kam
Subscriber to Composed AlterMap :KAM
dam
Subscriber to Composed AlterMap :DAM
-------------------------------------
有错误
user.password = 'set_the_password'
答案 0 :(得分:22)
最好简单地使用PasswordUser的新方法_set_password
:
# Instead of user.password = 'password'
user._set_password = 'password'
答案 1 :(得分:13)
这是因为SqlAlchemy更新为版本> = 1.2,引入了向后不兼容的更改。
您可以通过显式安装SqlAlchemy版本< 1.2。
来解决此问题AttributeError: can't set attribute
或者在requirements.txt
中pip install 'sqlalchemy<1.2'
答案 2 :(得分:1)
已修复
pip install 'sqlalchemy<1.2'
我正在使用apache-airflow 1.8.2
答案 3 :(得分:0)
如果有人对SQLAlchemy 1.2(@DanT的答案中提到)的不兼容更改实际上是是感到好奇,那么这就是SQLAlchemy处理混合属性的方式的更改。从1.2开始,方法必须与原始混合名称相同,而以前则不需要。 Airflow的修复非常简单。 contrib/auth/backends/password_auth.py
中的代码应与此不同:
@password.setter
def _set_password(self, plaintext):
self._password = generate_password_hash(plaintext, 12)
if PY3:
self._password = str(self._password, 'utf-8')
对此:
@password.setter
def password(self, plaintext):
self._password = generate_password_hash(plaintext, 12)
if PY3:
self._password = str(self._password, 'utf-8')
有关更多详细信息,请参见https://bitbucket.org/zzzeek/sqlalchemy/issues/4332/hybrid_property-gives-attributeerror。