inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Airflow 마스터 클래스

SQLAlchemy 2.X 지원

543

강운천

작성한 질문수 1

0

구글링해보면 Airflow가 전체적으로 2.X 지원을 준비하는 것 같긴 합니다만,

docker-compose로 airflow 2.8.4 docker를 설치하면

SQLAlchemy가 1.4.X가 설치되는 것 같습니다.

 

저희가 만든 Dags는 내부에 SQLAlchemdy 2.X를 사용해서 DB 접근을 하는 코드가 있는데

Airflow에 SQLAlchemy 2.X를 설치해서 쓰는 방법이 있을까요?

예를 들면, dags를 실행하는 Airflow-worker에 SQLAlchemy 최신 버전을 pip install로 설치한다던지요..

또는 기본 Base가 되는 이미지에 2.X로 업그레이드 시키거나, worker에 2.X를 설치할 때 Airflow의 기존 로직들은 이상이 없을지요?

아니면, 아래처럼 virtual env 방식으로 SQLAlchemy를 설치하는 식으로 사용해야 할까요?

    @task.virtualenv(
        task_id="virtualenv_python", requirements=["SQLAlchemy==2.0.0"], system_site_packages=False
    ) 

일반적으로 사용하는 방법에 대해 궁금합니다.

 

감사합니다.

python 데이터-엔지니어링 airflow sqlalchemy

답변 1

0

김현진

안녕하세요 강운천님!

Airflow 설치시 requirements.txt 를 통해 의존성을 관리할 수 있습니다.

아래 url (installing from PyPi) 에 들어가보세요.

https://airflow.apache.org/docs/apache-airflow/stable/installation/installing-from-pypi.html

그러면 아래처럼 airflow 설치할 때 --constraint 옵션을 통해 의존성 관리할 수 있고

pip install "apache-airflow[celery]==2.8.4" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.4/constraints-3.8.txt"

https 로 시작하는 부분을 들어가보면 패키지별로 버전이 다 명시되어 있습니다.

image

따라서 원한다면 저 부분을 복사한 후 WSL 내 디렉토리에 requirements.txt 로 만들어놓고 SQLAlchemy 부분을 원하시는 버전으로 수정 후 파일을 바라보고 설치하게끔 시도해볼 수 있습니다.

--constraints requirements.txt 

 

 

그러나!

아마도 설치 도중 의존성 문제가 발생할 겁니다.

그래서 airflow 설치는 일단 그대로 하시고 운찬님이 쓴대로 @task.virtualenv 데코레이터를 쓰시는게 가장 좋은 해결방안 같습니다. @task.virtualenv 는 PythonVirtualOperator 를 사용할 수 있게끔 해주는 건데, PythonVirtualOperator보다 데코레이터 사용을 권장합니다. (PythonVirtualOperator는 파이썬 가상환경을 만든 후 실행, 완료 후 삭제하는 오퍼레이터입니다)

 

그래서 결론은 운찬님이 쓰신대로 @task.virtualenv 를 쓰시는게 가장 적합해 보입니다.

 

 

0

강운천

말씀하신 방법을 알아보는데 virtualenv를 쓰려면 해당 함수 내에 모든 기능 구현을 해야하는 것처럼 보이네요.

requirement에 등록하는 설치형태가 아닌 다른 모듈(예: src.common.databases)은 import가 안되네요.

Worker docker만 Alchemy 2.0을 설치해보는 방법도 검토해보고 있는데 쉽지 않네요.

(플라스크가 1.4를 요구하네요)

0

김현진

혹시 virtualenv 를 사용해서 기능 구현하는게 어려운 상황이신가요?

어떤 상황인지 알려주시면 저도 같이 고민해보겠습니다. ^^

혹시 이미 custom operator를 만들었고, 큰 기능 변경없이 SQLalchemy 2.x 로 실행하고자 하는 상황이신가요?

pykrx 회원제 전환으로 인한 실습 불가

0

114

2

수료증 발급

0

84

3

에러 발생 관련 질문드립니다.

0

83

2

vscode 작업화면에 오류가 발생하지 않습니다.

0

69

2

plugins 폴더 생성

0

74

2

WSL에서 git push 가 안되요 ㅠ

0

113

2

chatGPT&Airflow로 블로그 자동 포스팅하기 는 Deprecated 가 필요합니다.

0

66

2

github에 회원가입이 안되는데 원인이 뭔지 모르겠어요 ㅠ

0

732

2

설치중인데 venv를 꼭 써야할까요?

0

126

2

설치 버전 관련 질문입니다.

0

68

1

우분투 버전 다운받아야하는데 어떤걸로 설치해야할까요?

0

62

1

DAG 만들기 중 airflow 패키지 로드 에러

0

106

2

3.0에서도 수업노트가 성립하는지 확인 부탁드립니다!

0

95

3

task_id 사용법이 뭔가 바뀐 것 같습니다.

0

76

3

email operator 오류 관련

0

66

2

plugins 폴더 관련

0

99

2

bash operator 관련 문의입니다

0

78

3

스케쥴러 - DAG 파싱 부하 줄이는 과정 질문

0

79

2

Dags refresh 주기 관련 질문

0

124

2

wsl 관련 질문입니다.!

0

74

2

macOS에서 docker 설치

0

94

2

템플릿 변수에 대한 오류

0

61

2

custom_image 디렉토리 문의드립니다.

0

54

2

ETL 인터뷰 관련 문의

0

103

2