我在Oracle机器上运行Airflow 2.3.0,当我在两个不同的终端上运行命令(命令airflow scheduler
和airflow webserver
)时,一切正常。但是,当我尝试以守护进程(命令airflow scheduler -D
和airflow webserver -D
)的形式运行服务时,只有调度程序命令才能工作。webserver命令生成以下错误。
我配置了气流(因此也是webserver_conf.py
文件),通过OAuth身份验证来工作,添加了自己的提供程序并扩展了AirflowSecurityManager
类,这样它就可以验证新的提供程序。正如我前面提到的,如果我正常运行这些服务,一切正常工作(甚至是登录到应用程序的身份验证)。我在Apache文档之后配置了webserver_conf.py
文件,下面是对webserver_conf.py
文件的配置。
from airflow.www.security import AirflowSecurityManager
class BaseSecurityManagerTQ(AirflowSecurityManager):
def get_oauth_user_info(self, provider, resp):
if provider == "TQ":
me = self.appbuilder.sm.oauth_remotes[provider].get('/connect/userinfo')
data = me.json()
ans = {
"username": "tq_" + data.get('name', ""),
"email": data.get("email", ""),
}
return ans
else:
return {}
FAB_SECURITY_MANAGER_CLASS = "webserver_config.BaseSecurityManagerTQ"
我尝试使用importlib
库导入新的安全模块,但是它没有工作。我也尝试过这些解决方案-- 1,2 --但它们也没有工作。
关于如何解决这个问题,有什么建议吗?
发布于 2022-06-30 14:27:33
我已经设法解决了,我不得不将webserver_config.py
文件所在的文件夹添加到PYTHON_PATH中。另外,添加一个__init__.py
文件以便能够导入模块。
https://stackoverflow.com/questions/72806995
复制相似问题