[core]
# 컨테이너 내에 dag를 저장하는 경로
# 이 경로는 절대 경로여야 합니다.
dags_folder = /opt/airflow/dags
# 호스트 이름을 결정하는 데 사용되는 호출 가능한 경로를 제공합니다.
# 호스트 이름은 DAG 실행 및 로깅, 웹 인터페이스에서의 표시, 이메일 알림 및 알림 메시지, 로그 및 지표 수집 시의 식별에 사용됨
# 형식은 "package.function"입니다.
# 예: 기본값 "airflow.utils.net.getfqdn"은 patched 된
# 버전의 socket.getfqdn()의 결과를 나타냅니다 - https://github.com/python/cpython/issues/49254.
#
# 함수에서 인수가 필요하지 않아야 합니다.
# 호스트 이름으로 IP 주소를 사용하려면 값으로 ``airflow.utils.net.get_host_ip_address``를 사용합니다.
hostname_callable = airflow.utils.net.getfqdn
# 날짜 및 시간이 Naive 한 경우의 기본 타임존
# utc (기본값), system 또는 IANA 타임존 문자열(예: Europe/Amsterdam)이 될 수 있습니다.
default_timezone = utc
# Airflow가 사용할 실행자 클래스를 정의합니다. 선택할 수 있는 옵션으로
# ``SequentialExecutor``, ``LocalExecutor``, ``CeleryExecutor``, ``DaskExecutor``,
# ``KubernetesExecutor``, ``CeleryKubernetesExecutor`` 또는 사용자 정의 실행자를 사용하는 경우
# 클래스의 전체 import 경로가 있습니다.
executor = SequentialExecutor
# Airflow 스케줄러 프로세스가 관리할 수 있는 동시 작업의 최대 수
# 일반적으로 이 값은 귀하의 클러스터의 스케줄러 수와 곱한 값이
# 메타데이터 데이터베이스에서 실행 중인 상태의 최대 작업 인스턴스 수입니다.
parallelism = 32
# 각 DAG에서 동시에 실행되는 최대 작업(task) 인스턴스 수입니다. DAG의 모든 DAG 실행에 대한
# 실행 중인 작업 수를 계산하려면 DAG 수준에서 ``max_active_tasks``로 설정합니다.
#
# 이것이 유용한 예시 시나리오는 초기 시작 날짜가 있는 새로운 DAG가 클러스터에서
# 모든 실행기 슬롯을 도둑 맞지 않도록 하는 경우입니다.
max_active_tasks_per_dag = 16
# DAG 생성시 기본적으로 일시 중지됩니까
dags_are_paused_at_creation = True
# 최대 DAG 실행 가능 숫자. 스케줄러는 제한에 도달하면 더 이상 DAG 실행을
# 생성하지 않습니다. DAG 수준에서 ``max_active_runs``로 설정할 수 있으며
# 기본값은 ``max_active_runs_per_dag``로 설정됩니다.
max_active_runs_per_dag = 16
# Python 프로세스를 시작하기 위해 multiprocessing 모듈을 통해 사용할 메서드의 이름입니다.
# 다양한 운영 체제와 환경에서 동작할 수 있도록 여러 가지 프로세스 시작 방법을 지원
# https://docs.python.org/3/library/multiprocessing.html#multiprocessing.set_start_method.
# UNIX 계열 시스템에서 fork / Windows, mac 에서는 spawn
# mp_start_method =
# Airflow와 함께 제공되는 DAG 예제를로드해야 하는지 여부를 정의합니다.
# 시작하는 데 좋지만 프로덕션 환경에서는이를 ``False``로 설정하는 것이 좋습니다.
load_examples = True
# Airflow 플러그인 모듈 있는 폴더의 경로
# 예를 들어 사용자 정의 연산자, 사용자 정의 센서 예: MyCustomDatabaseOperator.py, ExternalApiOperator.py, FileSensor.py
plugins_folder = /opt/airflow/plugins
# 작업을 부모 프로세스의 포크 ("False", 더 빠른 옵션) 또는 새로운 Python 프로세스로 실행해야 합니까 ("True" 느립니다,
# 그러나 플러그인 변경 사항이 즉시 작업에 반영됨)
execute_tasks_new_python_interpreter = False
# 데이터베이스 연결 비밀번호를 암호화하고 복호화하기 위한 비밀 키를 저장하는 변수
# 일반적으로 데이터베이스 연결 비밀번호는 애플리케이션의 설정 파일 또는 환경 변수에 저장되어 있습니다.
# 그러나 이 비밀번호를 평문으로 저장하면 보안상의 위험이 있습니다. 따라서 이를 암호화하여 저장하고, 필요할 때만 복호화하여 사용
# 이렇게 생성할수 있다.
# from cryptography.fernet import Fernet
# fernet_key = Fernet.generate_key()
# print(fernet_key.decode())
fernet_key =
# DAG 파일 가져 오기 시간 제한
dagbag_import_timeout = 30.0
# DAG 파일을 가져올 때 발생하는 ImportError나 실행 중에 발생한 예외(Exception)의 상세한 정보를 보여주는 것
# 개발 및 테스트 중인 경우에는 dagbag_import_error_tracebacks = True와 같이 설정하여 트레이스백을 표시하고,
# 운영 환경에서는 이를 False로 설정하여 최소화하는 것이 권장
dagbag_import_error_tracebacks = True
# Traceback가 표시되는 경우 traceback에서 표시할 항목 수
dagbag_import_error_traceback_depth = 2
# DagFileProcessor를 타임 아웃하는 시간, 스크립트 실행시간이 500을 넘는다면 재조정할것
# 시스템 리소스와 DAG 파일의 크기 및 복잡성에 맞춰야 합니다. 너무 짧게 설정하면
# 큰 DAG 파일이나 처리 복잡도가 높은 DAG 파일이 처리되지 않을 수 있고, 너무 길게 설정하면
# 타임아웃이 발생하기 전에도 작업이 너무 오랫동안 대기할 수 있습니다.
dag_file_processor_timeout = 50
# 서브 프로세스에서 작업 인스턴스를 실행하는 데 사용할 클래스입니다.
# StandardTaskRunner : 작업을 실행할 때 추가적인 리소스 제한 없이 일반적인 방식으로 실행합니다.
# CgroupTaskRunner :리눅스 cgroup(Control Groups)을 사용하여 작업을 실행하며, 리소스 제한을 적용할 수 있다.
task_runner = StandardTaskRunner
# 설정된 경우 ``run_as_user`` 인수가없는 작업에서 아래 입력된 사용자로 실행됩니다.
# 작업을 실행할 때 Airflow를 실행하는 sudo 사용자를 비슷하게 사용하여 작업을 실행 중인 경우
# 사용하여 사용자 실행 중에 권한을 해제 할 수 있습니다.
# 예를 들어, default_impersonation에 airflow라는 값을 설정하면, 작업에 별도로 사용자를
# 지정하지 않은 경우 Airflow는 기본적으로 airflow 사용자의 권한으로 작업을 실행할 수 있습니다
default_impersonation =
# 사용할 보안 모듈 Airflow가 웹 인터페이스를 통해 접근할 때 사용자를 인증하는 방법을 결정
# kerberos, ldap, password(데이터베이스에 저장된 사용자명과 비밀번호를 기반으로 기본 인증), oauth, openid_connect
security =
# unit_test 모드를 켤 것인가 (런타임 시 여러 구성 옵션을 테스트 값으로 덮어 씁니다)
# 예를 들어, 실제 운영 환경에서는 Amazon RDS와 같은 외부 데이터베이스를 메타데이터 저장소로 사용할 수 있습니다.
# 그러나 테스트를 수행할 때는 외부 데이터베이스에 연결하여 변경을 가하는 것이 아니라, SQLite와 같은 로컬 경량 데이터베이스를 사용
# 또한 개발 환경에서는 포트를 8080으로 설정할 수 있다.
# 개발, 테스트, 운영 등 각 환경에 맞는 별도의 프로파일(예: airflow_dev.cfg, airflow_test.cfg, airflow_prod.cfg)을 생성
unit_test_mode = False
# XCom에 대한 피클링을 활성화할 것인가 (이것은 불안전하며 RCE exploits을 허용합니다).
# 피클링(pickling)"은 Python의 피클링 기능을 사용하여 XCom(크로스 커뮤니케이션) 메시지를 직렬화 및 역직렬화하는
# 과정을 말합니다. XCom은 Airflow의 태스크 간 데이터를 공유할 때 사용됨
enable_xcom_pickling = False
# 역직렬화 중에 가져올 수있는 클래스입니다. 이는 다중 행 값으로 구문 분석됩니다.
# 각 항목은 정규 표현식으로 구문 분석됩니다. Python 내장 클래스 (예 : dict)은 항상 허용됩니다.
# airflow\..* 는 airflow 패키지 내의 모든 클래스를 허용
# 데이터를 안전하게 처리하고, 악의적인 역직렬화 시도로부터 시스템을 보호하는 데 중요한 역할을 합니다.
# 이 설정은 특히 외부에서 받은 데이터를 처리할 때 중요하며, 시스템의 안정성과 보안을 유지하는 데 도움
allowed_deserialization_classes = airflow\..*
# 작업이 강제로 종료될 때, SIGTERM을 수신 한 후 정리 할 수 있는 초 단위 시간
killed_task_cleanup_time = 60
# params를 dag_run.conf로 override할 것인가. ``airflow dags backfill -c`` 또는
# ``airflow dags trigger -c``를 통해 몇 가지 키-값 쌍을 전달하면 DAG 내의 params에 정의된 기존 값들을 오버라이드
dag_run_conf_overrides_params = True
# DAG를 검색할 때 ``DAG`` 및 ``airflow``라는 문자열이 포함되지 않은 파일은 DAG 정의 파일로 간주하지 않음
dag_discovery_safe_mode = True
# DAG 폴더내에 무시해도 되는 파일 패턴(.airflowignore 파일)에서 사용되는 패턴 구문.
# 정규식은 ``regexp`` 또는 ``glob``입니다.
# 예를 들어, dag_ignore_file_syntax = regexp로 설정된 경우,
# ^test_.*\.py$ : test로 시작하는 모든 py파일 제외, ^archive/ 라는 폴더 제외
dag_ignore_file_syntax = regexp
# 각 작업이 기본적으로 갖게 될 다시 시도 횟수입니다. DAG 또는 작업 수준에서 재정의 될 수 있습니다.
default_task_retries = 0
# 각 작업이 기본적으로 다시 시도 사이에 대기 할 시간 (초)입니다. DAG 또는 작업 수준에서 재정의 될 수 있습니다.
default_task_retry_delay = 300
# 작업의 유효한 총 우선 순위 가중치를위한 가중치 메서드
# downstream : 많은 작업들에게 데이터를 제공하는 중요한 작업일수록 높은 우선순위를 갖게 됨
# upstream : 여러 입력을 필요로 하는 복잡한 작업이 높은 우선순위를 갖게 됨
default_task_weight_rule = downstream
# 연산자의 기본 작업 실행 제한 시간 값입니다. 초로 timedelta에 전달 할 예정인 정수 값을
# 지정하십시오. 지정되지 않으면 값은 기본적으로 None으로 간주되어 연산자는 기본적으로 타임 아웃되지 않습니다.
default_task_execution_timeout =
# 직렬화 된 DAG를 db에 업데이트하는 최소 간격
# 데이터베이스 부하 관리와 성능 최적화를 위해 사용된다.
min_serialized_dag_update_interval = 30
# 직렬화된 DAGs(직렬화된 Directed Acyclic Graphs, 태스크의 의존성과 실행 순서를 정의한 데이터 구조)를
# 데이터베이스에 저장하기 전에 압축할지를 결정하는 설정
# True로 설정되면, Airflow 스케줄러나 웹 서버가 데이터베이스에 DAGs를 저장하기 전에 이를 압축
# 대신 이 설정을 쓰면 Airflow의 웹 인터페이스에서 제공하는 DAG 종속성 보기 기능이 비활성화된다.
compress_serialized_dags = False
# 직렬화 된 DAG를 검색하는 것이 최소 간격보다 빨라서는 안됩니다.
# 이 구성은 Webserver에서 DAG가 업데이트되는 시간을 제어합니다
min_serialized_dag_fetch_interval = 10
# 데이터베이스에 저장될 각 작업 인스턴스(Task Instance)의 템플릿 필드 수를 최대로 제한하는 값입니다.
# 가정: 데이터 파이프라인에 10개의 데이터 소스가 있고, 각 데이터 소스마다 4개의 템플릿 필드
# (호스트명, 포트, 사용자 이름, 비밀번호)가 설정되어 있습니다. 총 필요한 템플릿 필드 수는 10 x 4 = 40개입니다.
# 이 숫자를 작게 유지하면 오래된 작업에 대한 ``Rendered`` 탭을 볼 때 오류가 발생할 수 있습니다.
max_num_rendered_ti_fields_per_task = 30
# 예를 들어, 데이터 처리 작업이 매일 특정 시간(예: 오전 5시)까지 완료되어야 한다고 SLA가 설정되어 있습니다.
# check_slas = True로 설정하면, Airflow는 해당 작업이 오전 5시 이전에 완료되었는지를 자동으로 체크하고,
# 만약 완료되지 않았다면 관련된 경고나 알림(슬렉, 메일)을 발생시킴
check_slas = True
# 연산자 결과를 저장하고 해결하는 데 사용될 사용자 정의 XCom 클래스의 경로
# 예 : xcom_backend = path.to.CustomXCom
xcom_backend = airflow.models.xcom.BaseXCom
# False로 하면 기본적으로 Airflow 플러그인은 필요할 때만 로드됨.
# 플러그인이 'airflow'가 cli를 통해 호출되거나 모듈에서 로드 될 때마다 플러그인을로드하려면. True
lazy_load_plugins = True
# 기본적으로 Airflow 공급 업체는 게으르게 발견됩니다 (필요할 때만 발견 및 가져오기).
# 공급 업체 (예: 연결, 후크, 연산자 등을 제공하는 외부 플러그인이나 모듈)
# True 설정은 리소스를 보다 효율적으로 관리하지만, 때때로 특정 기능이 예상보다 늦게 사용
# False로 설정할 경우, 초기 로드 시 모든 공급 업체가 검증되므로, 의존성 문제나 구성 오류를 초기에 발견할 수 있습니다.
# 복잡한 플러그인 구조를 가진 큰 시스템에서 유용할 수 있습니다.
lazy_discover_providers = True
# 민감한 변수 또는 연결 추가 json 키를 UI 및 작업 로그에서 숨길지 여부
# 연결(Connection)의 비밀번호는 기본적으로 로그 및 UI에서 항상 숨겨집니다.
# hide_sensitive_var_conn_fields = True 설정을 활성화하면, 추가적으로 사용자가 지정한 민감한 정보를 자동으로 숨김
hide_sensitive_var_conn_fields = True
# 예를 들어, 연결 정보에 api_key, secret_token과 같은 민감한 정보가 포함되어 있다고 가정.
# 특정 변수에 password라는 키가 포함된 경우 이를 숨기고자 한다면, 설정은 다음과 같이 됨
sensitive_var_conn_names =
# ``default_pool`` Task Slot 카운트. 이 설정은 기존 배포에서 ``default_pool``이 이미 생성된 경우에만 영향을 미칩니다.
# 예를 들어, 기업이 자원 제한이 있는 서버에서 Airflow를 실행하고 있다면, 작업 풀을 통해 동시에 수행되는 작업의 수를 제한함으로써,
# 메모리와 CPU 사용률을 적절히 관리
default_pool_task_slot_count = 128
# XCom이 작업 매핑을 트리거하기 위해 푸시 할 수있는 최대 목록/사전 길이입니다.
# 푸시 된 목록/사전의 길이가이 값보다 크면 XCom을 푸시하는 작업이 자동으로 실패하여 스케줄러가 지연되지 않도록합니다.
max_map_length = 1024
# 데몬 모드에서 실행될 때 프로세스에 사용할 기본 umask입니다 (스케줄러, 워커 등).
# 데몬 모드에서 실행되는 프로세스(스케줄러, 워커 등)가 생성하는 새 파일의 기본 권한을 결정합니다.
# 설정된 umask 값(여기서는 0o077)은 새 파일과 디렉토리에 부여될 권한을 제한하여 보안을 강화합니다.
# 이 값은 8진수로 표현되며, 적용되는 권한은 이 umask 값을 통해 계산되어 시스템에 적용됨
daemon_umask = 0o077
# 데이터 세트 관리자 데이터 세트 생성, 업데이트, 삭제를 효과적으로 관리할 수 있는 모듈
# 예: dataset_manager_class = airflow.datasets.manager.DatasetManager
# dataset_manager_class =
# 데이터 세트 관리자에 제공할 kwargs입니다.
# 예: dataset_manager_kwargs = {"some_param": "some_value"}
# dataset_manager_kwargs =
[database]
# SqlAlchemy 메타데이터 데이터베이스에 대한 연결 문자열입니다.
# SqlAlchemy는 여러 다른 데이터베이스 엔진을 지원합니다.
# 자세한 정보는 여기에서 확인하십시오:
# http://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html#database-uri
sql_alchemy_conn = sqlite:////opt/airflow/airflow.db
# SQLAlchemy의 create_engine에 전달되는 추가 엔진별 키워드 인수입니다.
# 예: sql_alchemy_engine_args = {"arg1": True}
# sql_alchemy_engine_args =
# 데이터베이스의 인코딩입니다.
sql_engine_encoding = utf-8
# ``dag_id``, ``task_id``, ``key``, ``external_executor_id`` 열의 인코딩이 다른 경우
# 특정 데이터베이스 열(dag_id, task_id, key, external_executor_id)의 문자열 인코딩 및 정렬 순서(collation)를 설정하는 데 사용됨.
# 데이터베이스에서 열의 데이터를 어떻게 비교하고 정렬할지를 결정하며, 특히 MySQL과 MariaDB에서 중요한 역할을 함
# ``mysql`` 및 ``mariadb``의 경우 기본값은 ``utf8mb3_bin``입니다.
# 인덱스 키의 최대 크기가 허용 된 인덱스 크기를 초과하지 않도록 합니다.
# (https://github.com/apache/airflow/pull/17603#issuecomment-901121618 참조)
# sql_engine_collation_for_ids =
뚫
# SqlAlchemy가 데이터베이스 연결을 풀어야 하는지 여부입니다.
sql_alchemy_pool_enabled = True
# SqlAlchemy 풀 크기는 풀의 최대 데이터베이스 연결 수입니다.
# 0은 제한이 없음을 나타냅니다.
sql_alchemy_pool_size = 5
# 풀 크기로 체크 아웃 된 연결 수가 pool_size로 설정된 크기에 도달하면
# 추가 연결이이 제한까지 반환됩니다.
# 이러한 추가 연결이 풀로 반환되면 연결이 끊기고 폐기됩니다.
# 따라서 풀이 허용하는 동시 연결 수의 총계는
# pool_size + max_overflow이며
# 풀이 허용하는 "sleeping" 연결 수의 총계는 pool_size입니다.
# max_overflow는 ``-1``로 설정할 수 있습니다.
# overflow 제한이없음을 나타내려면;
# 동시 연결의 총 수에 대한 제한이 없게됩니다. 기본값은 ``10``입니다.
sql_alchemy_max_overflow = 10
# SqlAlchemy 풀 재활용은 연결이
# 풀에서 무효화되기 전에 풀에서 놀 수있는 초수입니다.
# 이 구성은 sqlite에는 적용되지 않습니다. DB 연결 수가 초과 된 경우
# 낮은 구성 값은 시스템이 더 빨리 복구 할 수 있게합니다.
sql_alchemy_pool_recycle = 1800
# 연결 풀 체크 아웃 시작시 연결마다 연결을 확인할지 여부입니다.
# 일반적으로 이것은 "SELECT 1"과 같은 간단한 문입니다.
# 자세한 내용은 여기에서 확인하십시오:
# https://docs.sqlalchemy.org/en/14/core/pooling.html#disconnect-handling-pessimistic
sql_alchemy_pool_pre_ping = True
# 메타데이터 데이터베이스에 사용할 스키마입니다.
# SqlAlchemy는 여러 개의 스키마 개념을 가진 데이터베이스를 지원합니다.
sql_alchemy_schema =
# Airflow가 함께 제공하는 기본 연결을로드할지 여부입니다. 시작하는 데는 좋지만
# 생산 환경에서는 이것을 ``False``로 설정하는 것이 좋습니다.
load_default_connections = True
# DB 운영 오류의 경우 코드를 재시도해야하는 횟수입니다.
# 원하지 않는 상태를 초래할 수 있으므로 모든 트랜잭션이 다시 시도되지는 않습니다.
# 현재 ``DagFileProcessor.process_file``에서만 사용되어 ``dagbag.sync_to_db``를 다시 시도합니다.
max_db_retries = 3
[logging]
# Airflow가 로그 파일을 저장해야하는 폴더입니다.
# 이 경로는 절대 경로 여야합니다.
# 기본값으로 설정되어 있다고 가정하는 몇 가지 구성이 있습니다.
# 이를 재정의하려면 dag_processor_manager_log_location 및
# dag_processor_manager_log_location 설정도 업데이트해야 할 수 있습니다.
base_log_folder = /opt/airflow/logs
# Airflow는 AWS S3, Google Cloud Storage 또는 Elastic Search에 원격으로 로그를 저장할 수 있습니다.
# 원격 로깅을 활성화하려면이 값을 True로 설정하십시오.
remote_logging = False
# 사용자는 저장소에 액세스 권한을 제공하는 Airflow 연결 ID를 제공해야합니다.
# 원격 로깅 서비스에 따라이는 로그 읽기 전용으로 사용될 수 있습니다.
remote_log_conn_id =
# Google Credential JSON 파일의 경로입니다. 생략하면
# 'Application Default Credentials`에 따라 권한 부여됩니다.
google_key_path =
# 원격 로깅의 로그를 저장하는 스토리지 버킷 URL입니다.
# S3 버킷은 "s3 ://"로 시작해야합니다.
# Cloudwatch 로그 그룹은 "cloudwatch ://"로 시작해야합니다.
# GCS 버킷은 "gs ://"로 시작해야합니다.
# WASB 버킷은 올바른 핸들러를 Airflow가 올바르게 선택하는 데 도움이 되기 위해 "wasb"로 시작해야합니다.
# Stackdriver 로그는 "stackdriver ://"로 시작해야합니다.
remote_base_log_folder =
# S3에 저장된 로그에 대해 서버 측 암호화 사용
encrypt_s3_logs = False
# 로깅 레벨.
#
# 지원되는 값 : ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, ``DEBUG``.
logging_level = INFO
# Celery의 로깅 레벨입니다. 설정되지 않은 경우 logging_level의 값을 사용합니다.
#
# 지원되는 값 : ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, ``DEBUG``.
celery_logging_level =
# Flask-appbuilder UI의 로깅 레벨입니다.
#
# 지원되는 값 : ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, ``DEBUG``.
fab_logging_level = WARNING
# 로깅 클래스
# 로깅 구성을 지정할 클래스입니다.
# 이 클래스는 파이썬 클래스 경로에 있어야합니다.
# 예 : logging_config_class = my.path.default_local_settings.LOGGING_CONFIG
logging_config_class =
# 콘솔에서 Colored 로그를 사용/사용하지 않을지 여부 플래그
# 컨트롤하는 터미널이 TTY 인 경우 로그를 색상으로 지정합니다.
colored_console_log = True
# Colored 로그가 활성화된 경우 로그의 형식
colored_log_format = [%%(blue)s%%(asctime)s%%(reset)s] {%%(blue)s%%(filename)s:%%(reset)s%%(lineno)d} %%(log_color)s%%(levelname)s%%(reset)s - %%(log_color)s%%(message)s%%(reset)s
colored_formatter_class = airflow.utils.log.colored_log.CustomTTYColoredFormatter
# 로그 라인의 형식
log_format = [%%(asctime)s] {%%(filename)s:%%(lineno)d} %%(levelname)s - %%(message)s
simple_log_format = %%(asctime)s %%(levelname)s - %%(message)s
# Airflow 워커를 시작하면 Airflow는 로컬 로그 파일을 Airflow 메인 웹 서버에 제공하기 위해 작은 웹 서버
# 서브 프로세스를 시작합니다. 그런 다음 메인 웹 서버가이 로그를 연결하고 페이지를 작성하여 사용자에게 보냅니다.
# 이는 로그를 제공하는 데 사용됩니다. 사용되지 않은 상태 여야하며 메인 웹 서버에서 볼 수 있어야합니다.
worker_log_server_port = 8793
[metrics]
# 메트릭(metric)은 시스템, 애플리케이션, 서비스의 성능과 건강을 측정하는 데 사용되는 데이터 포인트를 말함
# StatsD (https://github.com/etsy/statsd) 통합 설정입니다.
# StatsD로 메트릭을 전송하도록 설정합니다.
statsd_on = False
statsd_host = localhost
statsd_port = 8125
statsd_prefix = airflow
# StatsD로 모든 사용 가능한 메트릭을 보내지 않으려면,
# 메트릭 이름의 앞부분이 목록의 요소로 시작되는 메트릭 만 보내도록 허용 목록을 구성할 수 있습니다.
# (예 : "scheduler,executor,dagrun")
statsd_allow_list =
# stat_name_handler는 StatsD에서 사용하는 통계 이름(stat 이름)을 처리하는데 사용
# StatsD stat 이름을 유효성 검사하고 필요한 경우 stat 이름을 변경한 다음
# 변환 된 stat 이름을 반환하는 함수입니다.
# 이러한 이름은 통계 데이터를 구별하고 분류
# 함수는 다음 서명을 가져야합니다.
# def func_name(stat_name: str) -> str:
stat_name_handler =
# Airflow 메트릭을 보내기 위해 datadog 통합을 활성화하려면 True로 설정합니다.
statsd_datadog_enabled = False
# 모든 메트릭에 추가되는 datadog 태그 목록입니다 (예 : key1:value1, key2:value2)
statsd_datadog_tags =
# 사용자 정의 StatsD 클라이언트를 활용하려면 해당 모듈 경로를 설정하십시오.
# 참고 : Airflow가이를 가져와야하므로 모듈 경로는 PYTHONPATH에 존재해야합니다.
# statsd_custom_client_path =
[secrets]
# 사용할 비밀번호 백엔드의 전체 클래스 이름 (환경 변수 및 메타 스토어 전에 나옴)
# 예 : backend = airflow.providers.amazon.aws.secrets.systems_manager.SystemsManagerParameterStoreBackend
backend =
# backend_kwargs 매개 변수는 사전으로로드되어 secrets backend 클래스의 __init__에 전달됩니다.
# 사용중인 비밀번호 백엔드의 설명서를 참조하십시오. JSON을 예상합니다.
# AWS Systems Manager ParameterStore의 경우 다음과 같습니다.
# ``{"connections_prefix": "/airflow/connections", "profile_name": "default"}``
backend_kwargs =
뚫
[cli]
# cli가 API에 어떻게 액세스해야합니까. LocalClient는 데이터베이스를 직접 사용하며
# json_client는 웹 서버에서 실행되는 api를 사용합니다.
api_client = airflow.api.client.local_client
# web_server_url_prefix를 설정하면 여기에 추가하지 않으면 안됩니다. 예:
# ``endpoint_url = http://localhost:8080/myroot``
# 그러면 api가 다음과 같아집니다. ``http://localhost:8080/myroot/api/experimental/...``
endpoint_url = http://localhost:8080
[debug]
# ``DebugExecutor``만 사용됩니다. ``True``로 설정하면 DAG가 처음에 실패합니다.
# 실패한 작업이 있습니다. 디버깅 목적으로 유용합니다.
fail_fast = False
[api]
# 사용이 중단 된 실험적 API를 활성화합니다.이 API에는 액세스 제어가 없습니다.
# 인증 된 사용자에게 완전한 액세스 권한이 있습니다.
#
# .. 경고 ::
#
# 이 `Experimental REST API <https://airflow.readthedocs.io/en/latest/rest-api-ref.html>`__는
# 2.0 버전부터 사용 중단되었습니다. 대신 사용을 고려하십시오
# `안정된 REST API <https://airflow.readthedocs.io/en/latest/stable-rest-api-ref.html>`__.
# 이주에 대한 자세한 내용은
# `RELEASE_NOTES.rst <https://github.com/apache/airflow/blob/main/RELEASE_NOTES.rst>`_
enable_experimental_api = False
# API 사용자의 인증을 위한 auth 백엔드 사용자 목록입니다. 참조
# https://airflow.apache.org/docs/apache-airflow/stable/security/api.html에 가능한 값.
# ("airflow.api.auth.backend.default"는 역사적인 이유로 모든 요청을 허용합니다)
auth_backends = airflow.api.auth.backend.session
# API 요청의 최대 페이지 제한을 설정하는 데 사용됩니다
maximum_page_limit = 100
# limit이 0 인 경우 제로에서 기본 페이지 제한을 설정하는 데 사용됩니다. 기본 제한
# 100이 OpenApi 명세에 설정되어 있습니다. 그러나이 특정 기본 제한
# 제한이 API 요청에서 제로 (0)으로 설정된 경우에만 작동합니다.
# 제한이 제공되지 않으면 OpenApi 명세 기본값을 사용합니다.
fallback_page_limit = 100
# JWT 토큰 자격 증명을 위해 사용되는 대상입니다. 클라이언트 및 서버 측에서이 값을 일치시켜야합니다. 비어 있으면 청중이 테스트되지 않습니다.
# 예 : google_oauth2_audience = project-id-random-value.apps.googleusercontent.com
google_oauth2_audience =
# Google Cloud Service Account 키 파일 (JSON)의 경로입니다. 생략하면 권한이
# `the Application Default Credentials
# <https://cloud.google.com/docs/authentication/production#finding_credentials_automatically>`__을
# 기반으로합니다.
# 예 : google_key_path = /files/service-account-json
google_key_path =
# 이는 프리플라이트 요청에 대한 응답으로 사용되는 헤더입니다.이 헤더는
# Access-Control-Request-Headers 헤더입니다.
access_control_allow_headers =
# 리소스에 액세스 할 때 허용되는 방법을 지정합니다.
access_control_allow_methods =
# 응답이 주어진 원본의 요청 코드와 공유 될 수 있는지 나타냅니다.
# 여러 URL을 공백으로 구분합니다.
access_control_allow_origins =
[lineage]
# 사용할 lineage 백엔드입니다.
backend =
[atlas]
sasl_enabled = False
host =
port = 21000
username =
password =
[operators]
# 각 새로운 operator에 할당되는 기본 소유자입니다.
# 명시적으로 제공되지 않았거나 default_args를 통해 전달되지 않은 경우에만 해당됩니다.
default_owner = airflow
default_cpus = 1
default_ram = 512
default_disk = 512
default_gpus = 0
# 작업에 할당되고 worker가 청취하는 기본 대기열입니다.
default_queue = default
# 추가/사용되지 않은 인수(args, kwargs)를 BaseOperator에 전달할 수 있는지 여부입니다.
# False로 설정하면 예외가 throw되며 그렇지 않으면 콘솔 메시지 만 표시됩니다.
allow_illegal_arguments = False
[hive]
# HiveOperator 작업에 대한 기본 mapreduce 대기열
default_hive_mapred_queue =
# HiveOperator에서 mapred_job_name에 대한 템플릿, 다음 명명 된 매개 변수를 지원합니다.
# hostname, dag_id, task_id, execution_date
# mapred_job_name_template =
[webserver]
# 웹 사이트의 기본 URL로 airflow는 도메인 또는
# 사용 중인 cname이 무엇인지 추측할 수 없습니다.이는 자동화 된 이메일에서 사용됩니다.
# airflow는 링크를 올바른 웹 서버로 지정하는 데 도움이됩니다.
base_url = http://localhost:8080
# UI에서 모든 날짜를 표시하는 데 사용되는 기본 시간대입니다. UTC, system 또는
# IANA 시간대 문자열 (예 : Europe/Amsterdam). 비워 두면
# core/default_timezone의 기본값이 사용됩니다
# 예 : default_ui_timezone = America/New_York
default_ui_timezone = UTC
# 웹 서버를 시작할 때 지정된 IP
web_server_host = 0.0.0.0
# 웹 서버를 실행할 포트
web_server_port = 8080
# 웹 서버의 SSL 인증서 및 키의 경로. 두 개를 모두 제공하면 SSL이 활성화됩니다. 웹 서버 포트가 변경되지 않습니다.
web_server_ssl_cert =
# 웹 서버의 SSL 인증서 및 키의 경로. 두 개를 모두 제공하면 SSL이 활성화됩니다. 웹 서버 포트가 변경되지 않습니다.
web_server_ssl_key =
# Web 세션 데이터를 저장하는 데 사용되는 백엔드 유형. 'database' 또는 'securecookie'가 될 수 있습니다.
# 예 : session_backend = securecookie
session_backend = database
# 웹 서버가 응답하지 않는 gunicorn 마스터를 종료하기 전에 기다리는 시간 (초)
web_server_master_timeout = 120
# 워커가 응답하기 전에 gunicorn 웹 서버가 대기하는 시간 (초)
web_server_worker_timeout = 120
# 한 번에 새로 고칠 워커의 수입니다. 0으로 설정하면 worker 새로 고침이
# 비활성화됩니다. 0이 아닌 경우 airflow는 주기적으로 webserver worker를 새로 고쳐
# 새로운 worker를 기동하고 이전 worker를 종료합니다.
worker_refresh_batch_size = 1
# 워커 일괄 새로 고침 전에 대기할 시간 (초)
worker_refresh_interval = 6000
# True로 설정하면 Airflow는 plugins_folder 디렉토리의 파일을 추적합니다. 변경 사항이 감지되면
# gunicorn을 다시로드합니다.
reload_on_plugin_change = False
# Flask 앱을 실행하는 데 사용되는 비밀 키입니다. 가능한 한 무작위 여야합니다. 그러나
# webserver를 실행하는 데 사용되는 모든 머신에서 동일한 ``secret_key``를 사용하십시오.
# 그렇지 않으면 하나의 머신에서 "CSRF 세션 토큰이 없음"오류가 발생합니다.
# 웹 서버 키는 또한 로그가 검색 될 때 Celery 워커에게 요청을 승인하는 데 사용됩니다.
# 비밀 키를 사용한 토큰의 유효 시간은 짧지만 - 실행되는 모든 머신의 시간이 동기화되어 있는지 확인하십시오 (예 : ntpd를 사용)
# 그렇지 않으면 로그에 액세스 할 때 "금지됨"오류가 발생할 수 있습니다.
secret_key = CxzlypgGveoM2Ygt6Je1aA==
# Gunicorn 웹 서버를 실행하는 데 사용되는 워커 수
workers = 4
# Gunicorn이 사용해야하는 worker 클래스입니다.
# sync (기본값), eventlet, gevent와 같은 선택 사항이 있습니다. gevent를 사용할 때
# 가능하면 "1"로 _AIRFLOW_PATCH_GEVENT 환경 변수를 설정하여 가능한 한 빨리 gevent 패치가되도록합니다.
worker_class = sync
# Gunicorn 웹 서버의 로그 파일. '-'는 stderr로 로그를 남깁니다.
access_logfile = -
# Gunicorn 웹 서버의 로그 파일. '-'는 stderr로 로그를 남깁니다.
error_logfile = -
# Gunicorn 웹 서버의 액세스 로그 형식입니다.
# 기본 형식은 %%(h)s %%(l)s %%(u)s %%(t)s "%%(r)s" %%(s)s %%(b)s "%%(f)s" "%%(a)s"입니다.
# 문서 - https://docs.gunicorn.org/en/stable/settings.html#access-log-format
access_logformat =
# 웹 서버에서 설정 파일을 노출합니다. "non-sensitive-only"로 설정하면 모든 값을 표시합니다
# 보안에 영향을주는 것을 제외한. "True"는 모든 값을 표시합니다. "False"는
# 구성을 완전히 숨깁니다.
expose_config = False
# 웹 서버에서 호스트 이름을 노출합니다.
expose_hostname = True
# 웹 서버에서 스택 추적을 노출합니다.
expose_stacktrace = False
# 기본 DAG보기. 유효한 값은: ``grid``, ``graph``, ``duration``, ``gantt``, ``landing_times``
dag_default_view = grid
# 기본 DAG 방향. 유효한 값은:
# ``LR`` (왼쪽->오른쪽), ``TB`` (상단->하단), ``RL`` (오른쪽->왼쪽), ``BT`` (하단->상단)
dag_orientation = LR
# 초기 핸드 셰이크를 가져 오는 동안 웹 서버가 기다리는 시간 (초)
# 다른 워커 기계에서 로그를 가져올 때
log_fetch_timeout_sec = 5
# 다음 로그 가져 오기 전에 대기할 시간 (초).
log_fetch_delay_sec = 2
# 자동 tailing을 사용하려면 페이지 하단에서의 거리.
log_auto_tailing_offset = 30
# 자동 tailing 로그 표시의 애니메이션 속도.
log_animation_speed = 1000
# 기본적으로 웹에서 일시 중지된 DAG를 표시합니다. 이것을 숨기려면 뒤집으세요.
# 기본 DAG를 숨기려면 hide_paused_dags_by_default를 True로 설정하십시오.
hide_paused_dags_by_default = False
# UI의 모든 목록보기에서 일관된 페이지 크기
page_size = 100
# 탐색 표의 색상 정의
navbar_color = #fff
# UI에 표시 할 기본 DAG 실행
default_dag_run_display_number = 25
# Reverse proxy에 대한 werkzeug ``ProxyFix`` 미들웨어를 활성화
enable_proxy_fix = False
# ``X-Forwarded-For``에 대한 신뢰할 값을 지정합니다.
# 자세한 내용은 https://werkzeug.palletsprojects.com/en/0.16.x/middleware/proxy_fix/를 참조하십시오.
proxy_fix_x_for = 1
# ``X-Forwarded-Proto``에 대한 신뢰할 값을 지정합니다.
proxy_fix_x_proto = 1
# ``X-Forwarded-Host``에 대한 신뢰할 값을 지정합니다.
proxy_fix_x_host = 1
# ``X-Forwarded-Port``에 대한 신뢰할 값을 지정합니다.
proxy_fix_x_port = 1
# ``X-Forwarded-Prefix``에 대한 신뢰할 값을 지정합니다.
proxy_fix_x_prefix = 1
# 세션 쿠키에 안전한 플래그 설정
cookie_secure = False
# 세션 쿠키에 samesite 정책 설정
cookie_samesite = Lax
# DAG 코드 및 작업 인스턴스 로그보기에서 wrap 토글의 기본 설정.
default_wrap = False
# UI를 프레임에서 렌더링 할 수 있도록 허용
x_frame_enabled = True
# 익명 사용자 활동을 분석 도구로 전송
# google_analytics, segment 또는 metarouter 중에서 선택
# analytics_tool =
# 분석 도구의 계정 고유 ID
# analytics_id =
# "최근 작업" 통계는 설정한 경우 오래 된 DagRun에 대해 표시됩니다.
show_recent_stats_for_completed_runs = True
# 웹 서버 시작시 FAB 권한 및 보안 관리자 역할 동기화
update_fab_perms = True
# UI 쿠키 수명 (분). 사용자는 비활동 시
# ``session_lifetime_minutes`` 후에 UI에서 로그 아웃됩니다
session_lifetime_minutes = 43200
# DAG 개요 페이지 및 모든 페이지의 사이트 제목을위한 사용자 정의 페이지 제목 설정
# instance_name =
# DAG 개요 페이지의 사용자 정의 페이지 제목이 마크 업 언어를 포함하는지 여부
instance_name_has_markup = False
# 자동 새로 고침이 켜져 있을 때 그래프 또는 그리드 보기에서 DAG 데이터가 자동으로 새로 고침되는 데
# 걸리는 시간 (초)
auto_refresh_interval = 3
# 공개적으로 볼 수있는 배포에 대한 경고를 표시하는 부울
warn_deployment_exposure = True
# DAG 감사보기에서 제외 할 보기 이벤트의 쉼표로 구분 된 문자열.
# 여기에 전달 된 사항 이외의 다른 이벤트가 추가됩니다.
# 데이터베이스의 감사 로그에는이 매개 변수가 영향을주지 않습니다.
# 예를 들어 다음과 같습니다. audit_view_excluded_events = gantt,landing_times,tries,duration,calendar,graph,grid,tree,tree_data
audit_view_excluded_events = gantt,landing_times,tries,duration,calendar,graph,grid,tree,tree_data
# DAG 감사보기에 포함 할 보기 이벤트의 쉼표로 구분 된 문자열.
# 전달 된 경우이 이벤트 만 DAG 감사보기를 채 웁니다.
# 데이터베이스의 감사 로그에는이 매개 변수가 영향을주지 않습니다.
# 예: audit_view_included_events = dagrun_cleared,failed
# audit_view_included_events =
[email]
# 전자 메일 백엔드 구성 및
# 재시도 또는 실패시 전자 메일 알림을
# 보낼지 여부
# 사용할 전자 메일 백엔드
email_backend = airflow.utils.email.send_email_smtp
# 사용할 전자 메일 연결
email_conn_id = smtp_default
# 작업이 재시도 될 때 전자 메일 알림을 보낼지 여부
default_email_on_retry = True
# 작업 실패시 전자 메일 알림을 보낼지 여부
default_email_on_failure = True
# 전자 메일 주제에 사용될 템플릿으로 사용 될 파일 (Jinja2를 사용하여 렌더링 됨).
# 설정되지 않은 경우 Airflow는 기본 템플릿을 사용합니다.
# 예: subject_template = /path/to/my_subject_template_file
# subject_template =
# 전자 메일 내용에 사용될 템플릿으로 사용 될 파일 (Jinja2를 사용하여 렌더링 됨).
# 설정되지 않은 경우 Airflow는 기본 템플릿을 사용합니다.
# 예: html_content_template = /path/to/my_html_content_template_file
# html_content_template =
# 발신자 주소로 사용될 전자 메일 주소입니다.
# 이것은 원시 이메일이나 형식 "Sender Name <sender@email.com>"의 완전한 주소 일 수 있습니다.
# 예: from_email = Airflow <airflow@example.com>
# from_email =
[smtp]
# Airflow가 재시도, 실패시 이메일을 보내려면
# airflow.utils.email.send_email_smtp 함수를 구성하려면
# 여기에 smtp 서버를 구성해야합니다
smtp_host = localhost
smtp_starttls = True
smtp_ssl = False
# 예: smtp_user = airflow
# smtp_user =
# 예: smtp_password = airflow
# smtp_password =
smtp_port = 25
smtp_mail_from = airflow@example.com
smtp_timeout = 30
smtp_retry_limit = 5
[sentry]
# Sentry (https://docs.sentry.io) 통합. 여기에는
# Python 플랫폼을 기반으로하는 추가 구성 옵션을 제공 할 수 있습니다. 참조:
# https://docs.sentry.io/error-reporting/configuration/?platform=python.
# 지원되지 않는 옵션 : "통합", "in_app_include", "in_app_exclude",
# "ignore_errors", "before_breadcrumb", "transport"。
# Sentry에 오류 보고를 사용하려면
sentry_on = false
sentry_dsn =
[local_kubernetes_executor]
# 이 섹션은 위의 ``[core]`` 섹션에서
# ``LocalKubernetesExecutor``를 사용하는 경우에만 적용됩니다
# ``KubernetesExecutor``로 작업을 보낼 때 정의됩니다.
# 작업의 대기열 값이 ``kubernetes_queue`` (기본값 ``kubernetes``)인 경우
# 작업은 ``KubernetesExecutor``를 통해 실행되고,
# 그렇지 않으면 ``LocalExecutor``를 통해 실행됩니다.
kubernetes_queue = kubernetes
[celery_kubernetes_executor]
# 이 섹션은 위의 ``[core]`` 섹션에서
# ``CeleryKubernetesExecutor``를 사용하는 경우에만 적용됩니다
# ``KubernetesExecutor``로 작업을 보낼 때 정의됩니다.
# 작업의 대기열 값이 ``kubernetes_queue`` (기본값 ``kubernetes``)인 경우
# 작업은 ``KubernetesExecutor``를 통해 실행되고,
# 그렇지 않으면 ``CeleryExecutor``를 통해 실행됩니다.
kubernetes_queue = kubernetes
[celery]
# 이 섹션은 위의 ``[core]`` 섹션에서 CeleryExecutor를
# 사용하는 경우에만 해당됩니다
# Celery에서 사용 될 앱 이름
celery_app_name = airflow.executors.celery_executor
# ``airflow celery worker`` 명령으로 worker를 시작할 때 사용 될 동시성
# 이는 worker가 가져올 작업 인스턴스의 수를 정의하므로
# 작업의 리소스를 기준으로 worker를 크게 설정하고
# 작업의 성격에 맞게 크기를 맞추십시오
worker_concurrency = 16
# CeleryExecutor를 사용하여 worker를 시작할 때 사용되는 최대 및 최소 동시성
# 항상 최소 프로세스를 유지하지만 필요한 경우 최대로 늘어납니다. 값이
# max_concurrency,min_concurrency
# 자동 스케일 옵션이 사용 가능한 경우 worker_concurrency는 무시됩니다.
# http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-autoscale
# 예: worker_autoscale = 16,12
# worker_autoscale =
# 성능을 향상시키는 데 사용되는 작업을 미리 가져 오는 데 사용됩니다.
# worker_prefetch_multiplier를 사용하면 성능이 향상될 수 있습니다.
# 프로세스 수에 worker_prefetch_multiplier를 곱한 것이 됩니다.
# worker에 의해 미리 가져 올 작업의 수입니다.
# 1보다 큰 값은 여러 worker가 미리 가져 올 작업을 가져 와서
# 기존 작업이 길게 실행되는 동안 차단 될 수 있음을 의미합니다.
# 다른 worker에 의해 이미 가져 간 차단 된 작업
# https://docs.celeryproject.org/en/stable/userguide/optimizing.html#prefetch-limits
worker_prefetch_multiplier = 1
# 원격 제어가 활성화되어 있는지 여부를 지정합니다.
# 브로커로 Amazon SQS를 사용하는 경우 Celery는 많은 ``.*reply-celery-pidbox`` 큐를 만듭니다.
# false로 설정하면 이를 방지할 수 있습니다. 그러나 이를 비활성화하면 Flower가 작동하지 않습니다.
worker_enable_remote_control = true
# Celery 브로커 URL입니다. Celery는 RabbitMQ, Redis를 지원하며 실험적으로
# sqlalchemy 데이터베이스. 자세한 내용은 Celery 설명서를 참조하십시오.
broker_url = redis://redis:6379/0
# Celery result_backend입니다. 작업이 완료되면 메타 데이터를 업데이트해야합니다.
# 작업의 상태는 이를 사용하여 스케줄러가 작업의 상태를 업데이트합니다.
# 데이터베이스의 사용을 강력히 권장합니다.
# 지정되지 않은 경우 sql_alchemy_conn 및 db+ scheme 접두사가 사용됩니다
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-result-backend-settings
# 예: result_backend = db+postgresql://postgres:airflow@postgres/airflow
# result_backend =
# Celery Flower는 Celery를위한 멋진 UI입니다. Airflow에는 시작하는 바로 가기가 있습니다.
# it ``airflow celery flower``. 이는 Celery Flower가 실행되는 IP를 정의합니다
flower_host = 0.0.0.0
# Flower의 루트 URL
# 예: flower_url_prefix = /flower
flower_url_prefix =
# Celery Flower가 실행되는 포트를 정의합니다.
flower_port = 5555
# Basic 인증을 사용하여 Flower를 보안하는 방법
# 쉼표로 구분 된 user:password 쌍을 허용합니다.
# 예: flower_basic_auth = user1:password1,user2:password2
flower_basic_auth =
# CeleryExecutor가 작업 상태를 동기화하는 데 사용하는 프로세스 수입니다.
# 0은 max(1, 코어 수 - 1) 프로세스를 사용하도록합니다.
sync_parallelism = 0
# Celery 구성 옵션을 가져 오는 데 사용되는 가져 오기 경로
celery_config_options = airflow.config_templates.default_celery.DEFAULT_CELERY_CONFIG
ssl_active = False
ssl_key =
ssl_cert =
ssl_cacert =
# Celery Pool 구현.
# 선택 사항으로 ``prefork`` (기본값), ``eventlet``, ``gevent`` 또는 ``solo``.
# 참조 :
# https://docs.celeryproject.org/en/latest/userguide/workers.html#concurrency
# https://docs.celeryproject.org/en/latest/userguide/concurrency/eventlet.html
pool = prefork
# Celery 작업이 ``send_task_to_executor`` 또는
# ``fetch_celery_task_state`` 작업이 만료되기 전에 대기 할 초 단위 수입니다.
operation_timeout = 1.0
# Celery 작업은 작업이 worker에 의해 실행될 때 상태를 'started'로보고합니다.
# 이는 Airflow에서 실행 중인 작업을 추적하고 Scheduler가 다시 시작되면
# 또는 HA 모드에서 실행되면 이전 SchedulerJob에서 시작한 고아 작업을 채택 할 수 있습니다.
task_track_started = True
# 채택 된 작업이 큐에 대기하고 있으면 몇 초 후에 자동으로 소멸 될 것으로 예상하는 시간,
# 자동으로 예약됩니다. 이 설정은 ``stalled_task_timeout``과 똑같은 일을하지만
# 특정하게 채택된 작업에만 적용됩니다. 0으로 설정하면 ``stalled_task_timeout`` 설정도
# 채택 된 작업에 적용됩니다.
task_adoption_timeout = 600
# 큐에 대기하는 작업이 멈춘 것으로 가정되어 자동으로 예약 될 시간 (초).
# 대신 채택 된 작업은 지정된 경우 ``task_adoption_timeout`` 설정을 사용합니다.
# 0으로 설정하면 작업이 멈추는 것을 자동으로 지우는 것이 비활성화됩니다.
stalled_task_timeout = 0
# ``AirflowTaskTimeout`` 오류로 실패할 때 중개 브로커에 작업 메시지를 게시하기 위한
# 최대 재시도 횟수. 작업을 실패로 표시하고 포기하기 전에
# task_publish_max_retries보다 큰 작업을 수행합니다.
task_publish_max_retries = 3
# Worker 초기화 검사를 통해 메타 데이터 데이터베이스 연결을 유효성 검사 할 것인지 여부
worker_precheck = False
[celery_broker_transport_options]
# 이 섹션은 기본 celery 브로커 전송에 전달할 수있는 옵션을 지정하는 데 사용됩니다.
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-broker_transport_options
# visibility_timeout는 작업이 다른 worker로 메시지를 다시 전달하기 전에
# worker에서 작업을 확인하는 시간 (초)을 정의합니다.
# 가장 긴 ETA의 시간과 일치하도록 가시성 시간을 늘리십시오.
# Redis 및 SQS celery 브로커 전용입니다.
# http://docs.celeryproject.org/en/master/userguide/configuration.html#std:setting-broker_transport_options
# 예 : visibility_timeout = 21600
# visibility_timeout =
[dask]
# 이 섹션은 위의 [core] 섹션에서 DaskExecutor를 사용하는 경우에만 해당됩니다.
# Dask 클러스터의 스케줄러의 IP 주소 및 포트입니다.
cluster_address = 127.0.0.1:8786
# 보안 된 Dask 스케줄러에 액세스하는 데 사용되는 TLS/ SSL 설정입니다.
tls_ca =
tls_cert =
tls_key =
[scheduler]
# 작업 인스턴스는 외부 종료 신호를 듣습니다 (CLI 또는 UI에서 작업을 지울 때),
# 이는 그들이 얼마나 자주 청취해야하는지를 정의합니다 (초 단위).
job_heartbeat_sec = 5
# 스케줄러는 계속해서 새 작업을 트리거하려고 시도합니다 (더 자세한 정보는
# docs의 scheduler 섹션을 참조하십시오). 이것은 정의합니다
# 스케줄러가 얼마나 자주 실행되어야하는지 (초 단위).
scheduler_heartbeat_sec = 5
# 각 DAG 파일을 예약하려고 시도하는 횟수입니다.
# -1은 무제한 횟수를 나타냅니다.
num_runs = -1
# 스케줄러가 루프 간격에서 잠들어 있을 때 제어하지만,
# 루프에서 할 일이 없으면 즉시 다음 루프를 시작합니다.
scheduler_idle_sleep_time = 1
# DAG 파일이 구문 분석 될 초 단위 수입니다. DAG 파일은 매번
# ``min_file_process_interval`` 초 간격으로 구문 분석됩니다. DAG에 대한 업데이트는 이후에
# 이 간격. 이 숫자를 낮게 유지하면 CPU 사용량이 증가합니다.
min_file_process_interval = 30
# 얼마나 자주 (초) 불필요한 DAG를 비활성화하려면 확인할지 여부를 정의합니다.
# 예상 파일에서 더 이상 존재하지 않는 DAG입니다) 및 더 이상
# 참조되지 않은 데이터 집합 및 고아로 표시되어야합니다.
parsing_cleanup_interval = 60
# 얼마나 자주 (초) DAG 디렉토리에서 새 파일을 스캔 할지 정의합니다. 기본값은 5 분입니다.
dag_dir_list_interval = 300
# 로그에 통계를 인쇄하는 데 얼마나 자주 (초) 사용할지 정의합니다.
# 0으로 설정하면 통계를 인쇄하지 않습니다.
print_stats_interval = 30
# 풀 사용량 통계를 StatsD에 (statsd_on이 활성화 된 경우) 보낼 얼마나 자주 (초) 사용할지 정의합니다.
pool_metrics_interval = 5.0
# 마지막 스케줄러 심장이 스케줄러_health_check_threshold보다
# (초) 전에 발생 한 경우 스케줄러가 건강하지 않은 것으로 간주됩니다.
# 이것은 "/health" 엔드 포인트의 건강 검사에서 사용됩니다.
scheduler_health_check_threshold = 30
# 스케줄러를 시작하면 airflow는 작은 웹 서버를 시작하여
# 이게 True로 설정되면 subprocess에 건강 확인을 제공합니다
enable_health_check = False
# 스케줄러를 시작하면 airflow는 작은 웹 서버를 시작하여
# 이 포트에서 건강 검사를 제공합니다.
scheduler_health_check_server_port = 8974
# 얼마나 자주 (초) 스케줄러가 고아 작업 및 SchedulerJobs를 확인해야하는지 정의합니다.
orphaned_tasks_check_interval = 300.0
child_process_log_directory = /opt/airflow/logs/scheduler
# 로컬 작업 작업은 주기적으로 DB에 심장을 뛰어야합니다. 작업이
# 이 많은 시간 동안 뛰지 않은 경우 스케줄러는 관련된 작업 인스턴스를 실패로 표시하고
# 작업을 다시 예약합니다.
scheduler_zombie_task_threshold = 300
# 얼마나 자주 (초) 스케줄러가 좀비 작업을 확인해야하는지 정의합니다.
zombie_detection_interval = 10.0
#이 값을 False로 설정하여 스케줄러 캐치업을 비활성화합니다.
# 기본 동작은 변경되지 않으며
# 명령 줄 백필이 여전히 작동하지만 스케줄러
# 이 값이 False이면 스케줄러는 스케줄러 캐치업을하지 않습니다.
# 그러나 DAG 정의에서 DAG 단위로 설정할 수 있습니다
# (catchup)
catchup_by_default = True
# 이 값을 True로 설정하면 작업의 첫 번째 작업 인스턴스
# depends_on_past 설정을 무시합니다. 작업 인스턴스는 고려됩니다.
# 새로 추가 된 작업이 예약되려면 여기에 지정된 실행 날짜가 없습니다.
# 예를 들어 실행 일 이전의 작업 인스턴스가 없습니다.
# 새로 추가 된 작업을 예약하려면 수동으로 표시 할 필요가 없습니다.
ignore_first_depends_on_past_by_default = True
# 이는 스케줄링 메인 루프의 쿼리 배치 크기를 변경합니다.
# 이것이 너무 높으면 SQL 쿼리 성능이 쿼리 예측문의 복잡성 및/또는 과도한 잠금에 영향을 받을 수 있습니다.
# 게다가 데이터베이스에 대한 최대 허용 쿼리 길이에 도달 할 수 있습니다.
# 이를 위해 제한을 없애려면 0으로 설정하십시오 (권장되지 않음)
max_tis_per_query = 512
# 스케줄러가 관련 쿼리에서 ``SELECT ... FOR UPDATE``를 발행해야합니까.
# 이 값이 False로 설정되면 한 번에 하나 이상의 스케줄러를 실행하면 안됩니다.
use_row_level_locking = True
# 스케줄러 루프 당 만들어질 DAGRuns의 최대 수입니다.
max_dagruns_to_create_per_loop = 10
# 작업을 예약하고 큐잉 할 때 스케줄러가 검토 할 (잠금 할) DagRuns의 수입니다.
max_dagruns_per_loop_to_schedule = 20
# 작업의 "미니 스케줄러"를 수행하여 동일한 DAG의 더 많은 작업을 예약하도록
# 작업 감독 프로세스를 사용해야합니까? 여기에 둔다면 같은 DAG의 작업은 더 빨리 실행되지만,
# 어떤 상황에서는 다른 DAG를 허기킬 수 있습니다.
schedule_after_task_execution = True
# DAG를 구문 분석하는 데 병렬로 실행 할 수있는 스케줄러 프로세스의 수를 정의합니다.
# 이는 몇 개의 프로세스가 실행될 것인지 정의합니다.
parsing_processes = 2
# ``modified_time``, ``random_seeded_by_host`` 및 ``alphabetical`` 중 하나입니다.
# 스케줄러는 DAG 파일을 나열하고 정렬하여 구문 분석 순서를 결정합니다.
#
# * ``modified_time``: 파일의 수정 시간으로 정렬합니다. 이것은 대규모로 사용됩니다.
# 최근 수정된 DAG를 먼저 구문 분석합니다.
# * ``random_seeded_by_host``: 여러 스케줄러 간에 무작위로 정렬하지만 동일한 순서로 정렬합니다.
# 동일한 호스트에서. 각 스케줄러가 다르게 구문 분석 할 수있는 HA 모드에서 유용합니다.
# * ``alphabetical``: 파일 이름으로 정렬
file_parsing_sort_mode = modified_time
# DAG 프로세서가 독립 프로세스로 실행되는지 아니면 스케줄러 작업의 서브 프로세스인지 여부
# 입니다.
standalone_dag_processor = False
# Only applicable if `[scheduler]standalone_dag_processor` is true and callbacks are stored
# in database. Contains maximum number of callbacks that are fetched during a single loop.
max_callbacks_per_loop = 20
# Only applicable if `[scheduler]standalone_dag_processor` is true.
# Time in seconds after which dags, which were not updated by Dag Processor are deactivated.
dag_stale_not_seen_duration = 600
# 스케줄러가 cron 간격을 사용하지 않도록하려면이 값을 False로 설정합니다.
# DAG가 웹 UI 또는 trigger_dag에서 수동으로 제출되면 여전히 실행됩니다.
use_job_schedule = True
# 미래의 실행 날짜에 대한 외부 트리거 된 DagRuns을 허용
# DAG에서 schedule_interval이 None으로 설정되어 있을 때만 효과가 있습니다.
allow_trigger_in_future = False
# 아직 실행되지 않은 만료 된 트리거 요청을 확인하는 데 얼마나 자주 확인 할지 정의합니다.
trigger_timeout_check_interval = 15
[triggerer]
# 기본적으로 하나의 Triggerer가 한 번에 실행 할 트리거 수입니다.
default_capacity = 1000
[kerberos]
ccache = /tmp/airflow_krb5_ccache
# fqdn과 함께 확장됩니다
principal = airflow
reinit_frequency = 3600
kinit_path = kinit
keytab = airflow.keytab
# 티켓을 전달할 수있게하는 것을 비활성화하려면 허용하십시오.
forwardable = True
# 토큰에서 소스 IP를 제거하는 것을 허용하십시오. 토큰을 사용할 때 유용합니다.
# NAT 된 Docker 호스트 뒤에서
include_ip = True
[elasticsearch]
# Elasticsearch 호스트
host =
# 로그의 주어진 작업 로그를 쿼리하는 데 사용되는 로그_id의 형식
log_id_template = {dag_id}-{task_id}-{run_id}-{map_index}-{try_number}
# 작업의 로그 스트림을 표시하기위한 마크
end_of_log_mark = end_of_log
# 로그_id를 사용하여 쿼리하는 데 사용되는 elasticsearch 프론트 엔드의 정규 URL
# 위의 인수를 사용하여 log_id 템플릿에서 log_id를 구성합니다.
# 참고 : scheme은 제공되지 않은 경우 기본적으로 https로 설정됩니다.
# 예 : frontend = http://localhost:5601/app/kibana#/discover?_a=(columns:!(message),query:(language:kuery,query:'log_id: "{log_id}"'),sort:!(log.offset,asc))
frontend =
# 작업 로그를 worker의 stdout에 쓰지 않고 기본 파일에 쓰도록하려면
write_stdout = False
# 기본 로그 형식터 대신 로그 라인을 JSON으로 쓰려면
json_format = False
# JSON 출력이 활성화 된 경우 로그에 첨부 할 로그 필드
json_fields = asctime, filename, lineno, levelname, message
# 호스트 이름이 저장된 필드 (보통 ``host`` 또는 ``host.name``)입니다.
host_field = host
# offset이 저장된 필드 (보통 ``offset`` 또는 ``log.offset``)입니다.
offset_field = offset
[elasticsearch_configs]
use_ssl = False
verify_certs = True
[kubernetes_executor]
# KubernetesExecutor 워커의 기초가되는 YAML pod 파일의 경로입니다.
pod_template_file =
# Worker가 실행 할 Kubernetes Image의 저장소
worker_container_repository =
# Worker가 실행 할 Kubernetes Image의 태그
worker_container_tag =
# airflow workers가 생성 될 Kubernetes 네임 스페이스입니다. 기본값은 ``default``입니다.
namespace = default
# True 인 경우 종료시 모든 worker pod가 삭제됩니다.
delete_worker_pods = True
# False 인 경우 (delete_worker_pods가 True 인 경우),
# 실패한 worker pod는 삭제되지 않으므로 사용자가 조사 할 수 있습니다.
# 작업 자체가 실패 한 경우에만 worker pod의 제거를 방지합니다.
# 작업이 실패한 경우에만 worker pod의 제거를 방지합니다.
delete_worker_pods_on_failure = False
# 스케줄러 루프 당 Kubernetes Worker Pod 생성 호출 수입니다.
# 현재 기본값 "1"은 heartbeat당 하나의 pod 만 시작합니다.
# 사용자는 성능을 높이기 위해이 번호를 증가시킬 것을 강력히 권장합니다.
worker_pods_creation_batch_size = 1
# 사용자가 여러 네임 스페이스에서 pod를 시작하도록 허용합니다.
# 스케줄러를위한 클러스터 역할을 만들어야합니다.
multi_namespace_mode = False
# 쿠버네티스에서 실행중인 pod에서 연결하기위해 kubernetes가 pod에 제공하는 서비스 계정을 사용합니다.
# 쿠버네티스에서 실행 중인 pod에서 실행되고있는 프로세스에서 호출되면 예외가 발생합니다.
in_cluster = True
# in_cluster=False로 실행중인 경우 기본적인 cluster_context 또는 config_file을 변경하려면
# 옵션을 Kubernetes 클라이언트에 전달하십시오. ``kubectl``과 같은 기본 동작을 사용합니다.
# cluster_context =
#
# # in_cluster=False로 실행중인 경우 기본적인 cluster_context 또는 config_file 옵션을 변경하려면
# # Kubernetes Executor에 제공됩니다. 지정하지 않으면 기본 동작을 사용합니다.
# config_file =
#
# # Kubernetes 클라이언트 core_v1_api 메서드를 호출하는 동안 전달 할 키워드 매개 변수
# # Kubernetes Executor에서 제공 된 단일 줄 형식 JSON 사전 문자열로 제공됩니다.
# # 지원되는 매개 변수 목록은 모든 core_v1_apis에 대해 유사하므로
# # 모든 api에 대한 단일 구성 변수입니다. 참조 :
# # https://raw.githubusercontent.com/kubernetes-client/python/41f11a09995efcd0142e25946adc7591431bfb2f/kubernetes/client/api/core_v1_api.py
# kube_client_request_args =
#
# # 사용자가 Kubernetes Executor를 사용할 때 'delete_namespaced_pod' kubernetes client에서 전달하는
# # ``core_v1_api`` 메서드의 ``v1DeleteOptions`` 클래스에 정의된 옵션 중 일부를 포함 할 수 있습니다.
# # 여기에서 찾을 수 있습니다.
# # https://github.com/kubernetes-client/python/blob/41f11a09995efcd0142e25946adc7591431bfb2f/kubernetes/client/models/v1_delete_options.py#L19
# # 예 : delete_option_kwargs = {"grace_period_seconds": 10}
# delete_option_kwargs =
#
# # TCP keepalive 메커니즘을 활성화합니다. 이는 Kubernetes API 요청이 무기한 대기하는 것을 방지합니다.
# # 불안전한 연결이 시간 초과 된 서비스 (예 : 클라우드 로드 밸런서 또는 방화벽)에 연결되어 있을 때
# # 해당 옵션이 활성화되어 있으면 무기한 대기하는 것을 방지합니다.
# enable_tcp_keepalive = True
#
# # 'enable_tcp_keepalive' 옵션이 활성화 된 경우 TCP가 유휴 상태에 머무르는 시간 (초)입니다.
# tcp_keep_idle = 120
#
# # 'enable_tcp_keepalive' 옵션이 활성화 된 경우 Kubernetes API가 keepalive 프로브에 응답하지 않으면
# # TCP는 'tcp_keep_intvl' 초 후에 프로브를 다시 전송합니다.
# tcp_keep_intvl = 30
#
# # 'enable_tcp_keepalive' 옵션이 활성화 된 경우 Kubernetes API가 keepalive 프로브에 응답하지 않으면
# # 연결이 중단 될 때까지 'tcp_keep_cnt 번'의 프로브를 TCP가 다시 전송합니다.
# tcp_keep_cnt = 6
#
# # SSL 증명서의 Kubernetes python 클라이언트를 확인할지 여부를 결정하는
# # false로 설정하면 Kubernetes Executor에서 SSL 증명서를 확인하지 않습니다.
# verify_ssl = True
#
# # worker가 대기 상태로 있을 수있는 시간 (초)
worker_pods_pending_timeout = 300
#
# # 기다리는 worker가 시간 초과를 초과했는지 확인하는 빈도 (초)
worker_pods_pending_timeout_check_interval = 120
#
# # 큐에 있고 pod가없는 상태에서 대기 중인 작업 인스턴스를 확인하는 빈도 (초)
worker_pods_queued_check_interval = 60
#
# # 각 확인 간격에서 시간 초과 위반을 확인할 대기 중인 pod 수입니다.
# ``multi_namespace_mode``를 사용하는 경우이 값을 더 높게 설정 할 수 있습니다.
worker_pods_pending_timeout_batch_size = 100
[sensors]
# Sensor의 기본 시간 제한은 기본적으로 7 일입니다 (7 * 24 * 60 * 60).
default_timeout = 604800