Size: a a a

2021 May 26

DM

Dmitriy MATYUKHIN in Airflow
привет! может уто-то сталкивался  с таким... Хочу запускать код в airflow, который лежит в нексус, замерджил в прод, при попытке тригенрнуть не получаю ожидаемый результат, в логах нахожу такую ошибку: Cannot install reporting-bot==0.0.1, reporting-bot==0.0.2 and reporting-bot==0.0.3 because these package versions have conflicting dependencies. airflow предлагает удалить предидущие версии, но кажется это не так решается
источник

ME

Max Efremov in Airflow
но если один дагран закончился, почему второй не стартует?
источник

VS

Vladislav 👻 Shishkov... in Airflow
если речь про это, то по описанию похоже на зависимость тасок
источник

VS

Vladislav 👻 Shishkov... in Airflow
кажется да, попахивает странной зависимостью в reporting-bot
источник

DM

Dmitriy MATYUKHIN in Airflow
более делтально по ошибке
The conflict is caused by:
reporting-bot 0.0.3 depends on vertica-pythonsqlalchemy-verticasqlalchemy-vertica-python
reporting-bot 0.0.2 depends on vertica-pythonsqlalchemy-verticasqlalchemy-vertica-python
reporting-bot 0.0.1 depends on vertica-pythonsqlalchemy-verticasqlalchemy-vertica-python

кажется что указывает что зависимости между версиями в нексусе, но я ни разу не сталкивался с тем, чтобы надо было удалять предидущие пакеты
источник

VS

Vladislav 👻 Shishkov... in Airflow
мне так тяжело понять
источник

VS

Vladislav 👻 Shishkov... in Airflow
источник

ММ

Максим Мартынов... in Airflow
какие зависимости у этих версий, как выполняется установка, какая версия pip?
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in Airflow
Ребят, а есть туторы, или пример, как самому закинуть файл в air, и собственно проверить, что он работает: аля, я закинул тестовый, который в баше пишет просто, но в history нифига нету, + инфа о том, как использовать переменные, которые я завожу в те же connections
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in Airflow
А то лазяю по каким-то обрубкам информации, если честно, такое себе
источник

SO

Simon Osipov in Airflow
Привет, помогите понять, где пошло не так.
Airflow 2.0.2 в GKE
Собственный собранный контейнер airflow

Dockerfile:

ENTRYPOINT ["/opt/airflow/entrypoint.sh"]


Entrypoint.sh:

#!/usr/bin/env bash

case "$1" in
 webserver)
   exec airflow webserver
   ;;
 scheduler)
   exec airflow scheduler
   ;;
 *)
   exec "$@"
   ;;
esac


Этот контейнер используется и для webserver, и для scheduler и он же указан для KubernetesExecutor (то есть используется как worker)
Когда запускаю рукой DAG

org_node = KubernetesPodOperator(
       namespace='my-namespace',
       image='python:3.8',
       cmds=['python', '-c'],
       arguments=['print("HELLO")'],
       labels={'foo': 'bar'},
       image_pull_policy='Always',
       name='sample-pod-task',
       task_id='sample_pod_tasks',
       image_pull_secrets=[k8s.V1LocalObjectReference('my-secret')],
       is_delete_operator_pod=False,
       get_logs=True,
       dag=dag_
)

Под с DAG валится с ошибкой `airflow command error: argument GROUP_OR_COMMAND: invalid choice: 'airflow' (choose from 'celery', 'cheat-sheet', 'config', 'connections', 'dags', 'db', 'info', 'kerberos', 'kubernetes', 'plugins', 'pools', 'providers', 'roles', 'rotate-fernet-key', 'scheduler', 'sync-perm', 'tasks', 'users', 'variables', 'version', 'webserver'), see help above.
usage: airflow [-h] GROUP_OR_COMMAND ...`

То есть ощущение, что он пытается выполнить команду airflow airflow tasks run parser-prefix sample_pod_tasks 2021-05-26T09:39:50.207073+00:00 --local --pool default_pool --subdir /opt/airflow/dags/6764b9dddbf24495327cd6eedad926ce5204a4f0/my-dag.py
Не пойму, откуда вылезло это лишнее airflow

Локально sh скрипт отрабатывает верно
источник

ММ

Максим Мартынов... in Airflow
может в pod_template_file что-то не то?
источник

SO

Simon Osipov in Airflow
spec:
 serviceAccountName: airflow
 automountServiceAccountToken: true
 containers:
   - name: base
     imagePullPolicy: Always
     resources:
       requests:
         memory: 500Mi
         cpu: 500m
       limits:
         memory: 1000Mi
         cpu: 1000m


Ничего более(
источник

ММ

Максим Мартынов... in Airflow
советую добавить у первых двух условий в case оператор break, а то они будут выполняться последовательно
источник

ММ

Максим Мартынов... in Airflow
еще можно поменять уровень логирования на debug и посмотреть в логи scheduler, там будет информация об запускаемой команде и образе
источник

ММ

Максим Мартынов... in Airflow
возможно у тебя просто образ какой-то дефолтный используется
источник

SO

Simon Osipov in Airflow
Если посмотреть describe пода, то там все то, что нужно


Image:         artifactory-address/my-team-airflow:latest
   Image ID:      artifactory-address/my-team-airflow@sha256:ac0d7572f50912414fbf7df9a31dd87c20bfe1f36d8be0d3116c3c01a0992370
   Port:          <none>
   Host Port:     <none>
   Args:
     airflow
     tasks
     run
     parser-prefix
     sample_pod_tasks
     2021-05-26T09:39:50.207073+00:00
     --local
     --pool
     default_pool
     --subdir
     /opt/airflow/dags/6764b9dddbf24495327cd6eedad926ce5204a4f0/my-dag.py
источник

ММ

Максим Мартынов... in Airflow
а docker image history по этому образу выведет твой кастомный entrypoint в списке слоев? он точно туда скопировался?
источник

SO

Simon Osipov in Airflow
ну в самом airflow же webserver и scheduler запускаются успешно благодаря этому скрипту…
источник

ММ

Максим Мартынов... in Airflow
это еще не показатель
источник