Airflow - переключение на CeleryExecutor приводит к ошибке аутентификации пароля для исключения пользователя «воздушный поток» - PullRequest
0 голосов
/ 13 июля 2020

Я запускаю docker контейнер с apache воздушным потоком

Если я устанавливаю executor = LocalExecutor, все работает нормально, однако, если я устанавливаю executor = CeleryExecutor и запускаю DAG, я получаю следующее исключение

[2020-07-13 04:17:41,065] {{celery_executor.py:266}} ERROR - Error fetching Celery task state, ignoring it:OperationalError('(psycopg2.OperationalError) FATAL:  password authentication failed for user "airflow"\n')

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/airflow/executors/celery_executor.py", line 108, in fetch_celery_task_state


Однако я предоставляю следующие переменные ENV в docker run call

docker run --name test -it  \
  -p 8000:80 -p 5555:5555 -p 8080:8080 \
  -v `pwd`:/app \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_DEFAULT_REGION \
  -e PYTHONPATH=/app \
  -e ENVIRONMENT=local \
  -e XCOMMAND \
  -e POSTGRES_PORT=5432 \
  -e POSTGRES_HOST=postgres \
  -e POSTGRES_USER=project_user \
  -e POSTGRES_PASSWORD=password \
  -e DJANGO_SETTINGS_MODULE=config.settings.local \
  -e AIRFLOW_DB_NAME=project_airflow_dev \
  -e AIRFLOW_ADMIN_USER=project_user \
  -e AIRFLOW_ADMIN_EMAIL=admin@project.com \
  -e AIRFLOW_ADMIN_PASSWORD=password \
  -e AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://project_user:password@postgres:5432/project_airflow_dev \
  -e AIRFLOW__CORE__EXECUTOR=CeleryExecutor \
  -e AIRFLOW__CELERY__BROKER_URL=redis://redis:6379/1 \
  --network="project-network" \
  --link project_cassandra_1:cassandra \
  --link project_postgres_1:postgres \
  --link project_redis_1:redis \
    registry.dkr.ecr.us-east-2.amazonaws.com/airflow:v1.0

В LocalExecutor - все в порядке, поэтому я могу войти в пользовательский интерфейс администратора и запустить даг и добиться успеха результаты, просто когда я переключаюсь на CeleryExecutor - я получаю странную ошибку о пользователе "воздушного потока", как будто AIRFLOW__CORE__SQL_ALCHEMY_CONN env var не отображается или не используется вообще.

Есть идеи?

1 Ответ

0 голосов
/ 13 июля 2020

решение :

Добавление AIRFLOW__CELERY__RESULT_BACKEND env var устраняет проблему.

...
-e AIRFLOW__CELERY__RESULT_BACKEND=db+postgresql+psycopg2://project_user:password@postgres:5432/project_airflow_dev \
...

или отредактируйте airflow.cfg

[celery]
result_backend = db+postgresql://airflow:airflow@postgres/airflow
...