본문 바로가기
반응형

Minding's Programming/Airflow27

[Airflow] Python Operator의 op_args, op_kwargs *args와 **kwargs의 개념 정리: [Python] 파이썬 함수 파라미터 *args와 **kwargs op_args 파이썬 오퍼레이터를 사용해 파이썬 함수를 실행시킬 경우 해당 함수의 파라미터는 op_args를 통해 전달한다.as dag: def regist(name, sex): print(f'이름은 {name}이고 성별은 {sex}입니다.') py_task_1 = PythonOperator( task_id = 'py_task_1', python_callable=regist, op_args = ['minding', 'man'] # 리스트 형태로 작성 py_task_1 = PythonOperator( # *args가 있을 경우 task_id = 'py_task_1',.. 2024. 7. 22.
[Python] 파이썬 함수 파라미터 *args와 **kwargs 파이썬의 일반적인 함수 인자 보통의 파이썬 함수는 인자(파라미터)를 필요로 하고, 아래와 같이 쓰인다.def regist(name, sex): print(name) print(sex) 위 함수를 기준으로 봤을 때, 이름과 성별 말고도 추가적인 정보(이메일, 전화번호 등)를 받을 수도 있을 때에는 어떻게 해야할까? 저 함수를 그대로 놓고 추가적인 정보를 제공한다면 에러가 나기 때문에, 수정이 필요하다. *args 첫 번째 방법으로는 *args를 사용할 수 있다.def regist(name, sex, *args): print(type(args)) # args는 tuple 형태로 저장됨 email = args[0] if len(args) >= 1 else None # 부가정보 없는 경우 대비해.. 2024. 7. 22.
[Airflow] Python Operator 사용과 Python Decorator Python Operator 파이썬 오퍼레이터: Airflow에서 Python 함수를 실행시키는 오퍼레이터로, 해당 클래스를 이용해 DAG을 만들면 파이썬 함수를 실행시키는 워크플로우를 생성할 수 있다. 1. 내부 함수 실행# 내부에 직접 함수를 만드는 경우from airflow import DAGimport pendulumimport datetimefrom airflow.operators.python import PythonOperatorimport randomwith DAG( dag_id="dags_python_operator", schedule="30 6 * * *", # 매일 6시 30분 마다 start_date=pendulum.datetime(2023, 3, 1, tz="Asia.. 2024. 7. 22.
[Airflow] Email 오퍼레이터 사용해보기 (Gmail 서버 사용) Gmail 사전 설정 작업 Gmail > 설정 > 모든 설정보기 > 전달 및 POP/IMAP > IMAP 사용 구글 계정관리 > 보안 > 2단계 인증 > 앱 비밀번호 세팅여기서 발급받은 비밀번호는 다시 볼 수 없으니 꼭 기억해두어야 한다.  airflow 설정vi 편집기를 이용해 docker-compose.yaml 파일에 해당 내용을 추가해주어야 한다.  AIRFLOW__SMTP__SMTP_HOST: 'smtp.gmail.com' # 사용할 서버 AIRFLOW__SMTP__SMTP_USER: 'tlsfk48@gmail.com' # 로그인할 계정 AIRFLOW__SMTP__SMTP_PASSWORD: '{password}' # 앱 비밀번호 AIRFLOW__SMTP__SMTP_PORT: .. 2024. 7. 19.
[Airflow] Bash Operator로 쉘 스크립트 파일 실행하기 쉘 스크립트는?Unix/Linux Shell 명령을 이용해 만들어지고 인터프리터에 의해 한 줄씩 처리되는 파일(ex. 컴파일 방식: C, Java / 인터프리터 방식: Python, Shell)echo, mkdir 등 기본적인 쉘 명령어를 입력해 작성하며, 변수를 입력받거나 for/if문 및 함수도 사용 가능하다.확장자가 없어도 동작하지만 주로 파일명에 .sh 확장자를 붙임 왜 쉡 스크립트가 필요한가?쉘 명령어를 이용해 복잡한 로직을 처리하는 경우 함수화하여 간단히 하기 위해(ex. sftp를 통해 파일 받은 후 DB에 Insert & tar.gz로 압축해두기)쉘 명령어 재사용을 위해서 Worker 컨테이너에서 쉘 스크립트를 수행하려면?일반적으로 컨테이너에서 쉘 스크립트를 이용하지 못하는 이유컨테이너는 .. 2024. 7. 19.
[Airflow] DAG 내 task 연결하기 (순서 지정) DAG 내에서 각 Task들의 순서를 연결해주는 방법에는 크게 2가지가 있다. 1. >>, 이 방법은 Airflow에서 공식적으로 추천하는 방법이다. >>, # task 하나씩 연결해 줄 경우t1 >> t2t1 >> t3t2 >> t4t3 >> t4t5 >> t4# 여러 task를 한꺼번에 나타내 줄 경우t1 >> [t2, t3] >> t4 (> t4위와 같이 >> 화살표의 진행 방향대로 task의 순서를 지정해줄 수 있다. 동시에 수행해야 할 task의 경우 리스트에 넣어 표현해줄 수 있다. 위 처럼 task의 순서를 연결해서 Airflow 웹 서버에서 확인해본다면 아래와 같은 그래프를 확인할 수 있다.  2. 함수 사용해 연결아래 공식문서를 통해 함수를 통한 연결 방법도 알 수 있다.https://a.. 2024. 7. 19.
728x90
반응형