Отладка веб-аутентификации для Apache Airflow

Я пытаюсь включить веб-аутентификацию для моего gcp vm, на котором работает сервер воздушного потока. Я использовал официальные документы для обновления файла конфигурации:

[webserver]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth

а также создать пользователя в метаданных.

$ cd ~/airflow
$ python
Python 2.7.9 (default, Feb 10 2015, 03:28:08)
Type "help", "copyright", "credits" or "license" for more information.
>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'new_user_name'
>>> user.email = 'new_user_email@example.com'
>>> user.password = 'set_the_password'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()

В приведенном выше разделе паролей произошла ошибка, поэтому я выполнил следующую команду, предложенную здесь:

user._set_password = ‘………….’.encode('utf8') 

После этого в терминале Python не было ошибок, и я предположил, что пользователь был успешно создан в метабазе. После этого я инициализировал БД, что привело к ошибке:

$ airflow initdb
....
....
  File "/usr/lib/python2.7/base64.py", line 119, in urlsafe_b64decode
    return b64decode(s.translate(_urlsafe_decode_translation))
  File "/usr/lib/python2.7/base64.py", line 78, in b64decode
    raise TypeError(msg)
TypeError: Incorrect padding

Я не знаю почему, но настройка ключа Fernet помогла, и я мог запустить initdb без каких-либо ошибок:

~$ airflow initdb
[2018-06-07 20:58:58,301] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt
[2018-06-07 20:58:58,322] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt
[2018-06-07 20:58:58,447] {__init__.py:45} INFO - Using executor LocalExecutor
[2018-06-07 20:58:58,546] {db.py:312} INFO - Creating tables
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
[2018-06-07 20:58:59,982] {models.py:189} INFO - Filling up the DagBag from /home/username/airflow/dags
Done.

Но... когда я хотел запустить веб-сервер, он не работал:

$ airflow webserver -p 8080
....
....
Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 27, in <module>
    args.func(args)
  File "/usr/local/lib/python2.7/dist-packages/airflow/bin/cli.py", line 678, in webserver
    app = cached_app(conf)
  File "/usr/local/lib/python2.7/dist-packages/airflow/www/app.py", line 161, in cached_app
    app = create_app(config)
  File "/usr/local/lib/python2.7/dist-packages/airflow/www/app.py", line 52, in create_app
    app=app, config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'})
  File "/usr/local/lib/python2.7/dist-packages/flask_cache/__init__.py", line 121, in __init__
    self.init_app(app, config)
  File "/usr/local/lib/python2.7/dist-packages/flask_cache/__init__.py", line 156, in init_app
    from .jinja2ext import CacheExtension, JINJA_CACHE_ATTR_NAME
  File "/usr/local/lib/python2.7/dist-packages/flask_cache/jinja2ext.py", line 33, in <module>
    from flask.ext.cache import make_template_fragment_key
ImportError: No module named ext.cache

Кто-то указал мне на эту проблему:

Я установил оба этих пакета, но проблема остается:

У кого-нибудь есть предложения по дальнейшему устранению неполадок?

0 ответов

Другие вопросы по тегам