เดเดเตเดเดณเตเดเต เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดชเดฐเดฟเดชเดพเดเดฟเดเตพ เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตเดจเตเดจเดคเดฟเตฝ, เดเดฟเดฒ เดเดชเดเดฐเดฃเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดเตเดเตพ เดเดเดฏเตเดเตเดเดฟเดเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดเตพ เดจเตเดฐเดฟเดเตเดจเตเดจเต. เดเดเตเดเตพ เด เดตเดฐเต เด เดญเดฟเดฎเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจ เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเตฝ, เด เดชเตเดฐเดถเตเดจเดคเตเดคเต เดจเตเดฐเดฟเดเดพเตป เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจ เดฎเดคเดฟเดฏเดพเดฏ เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเดจเตเดเดณเตเด เดฒเตเดเดจเดเตเดเดณเตเด เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดฒเตเดฒ.
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 2015-เตฝ, เดฌเดฟเดเต เดกเดพเดฑเตเดฑเดพ เดธเตเดชเตเดทเตเดฏเดฒเดฟเดธเตเดฑเตเดฑเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเตฝ เดเดฐเตเดธเดฎเดฏเด 35 เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดธเตเดชเดพเตผเดเตเดเดฟเดจเตเดชเตเดชเด เดนเดกเตเดชเตเดชเต เดเตเดฒเดธเตเดฑเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเต. YARN เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดคเตเดคเดฐเดฎเตเดฐเต เดเดชเดฏเตเดเตเดคเต เดเตเดธเดฟเดจเดพเดฏเดฟ เดเดคเต เดเดเตเดเดจเต เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดฃเดฎเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดฒเตเดฒ. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เด
เดตเตผ เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดชเดพเดค เดเดฃเตเดเตเดคเตเดคเดฟ, เดจเดเดจเตเดจเต
เดเดฐเดฟเดคเตเดฐเดพเดคเตเดคเดเดพเดฒเด
เดเดคเตเดคเดตเดฃ เดจเดฎเตเดฎเตพ เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเดฑเตเดฑเตเดฐเต เดชเดฐเดฟเดชเดพเดเดฟเดฏเต เดเตเดฑเดฟเดเตเดเดพเดฃเต -
เดเดฒเตเดฒเดพเด เดชเตเดคเตเดตเต เดจเดฒเตเดฒเดคเดพเดฃเต. เด เดตเตผ เดชเตเดชเตเดชเต เดฒเตเดจเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดเตเดเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฐเต "เดชเดเตเดทเต" เดเดฃเตเดเต: เดเดเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเตเด เดชเด เดจ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดธเดพเดเตเดเตเดคเดฟเดเดฎเดพเดฏเดฟ เดชเตเดฐเตเดเดฎเดฟเดเตเดเดตเดฏเดพเดฃเต. เดฒเดพเดฌเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป, เดเดเตเดเตพ เดเดเตเดเตเดฎเดพเดฑเตเดฑเดฟเดเต เดเตเดเตเดเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต: เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดฏเดพเตพ เดคเดจเตเดฑเต เดธเตเดตเดเดพเดฐเตเดฏ เด เดเตเดเตเดฃเตเดเดฟเดฒเตเดเตเดเต เดชเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, "เดเตเดเตเดเต" เดฌเดเตเดเดฃเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด, เดเตเดฑเดเตเดเต เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดถเตเดทเด เด เดตเตป เดเตเดฏเตเดคเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฟเดฒ เดตเดฟเดชเตเดฒเตเดเตเดค เดซเตเดกเตเดฌเดพเดเตเดเต เด เดตเตป เดเดพเดฃเตเดจเตเดจเต. เด เดเดเตเดเดคเตเดคเดฟเดฒเดพเดฃเต เดจเดฎเตเดฎเตพ เดจเดฎเตเดฎเตเดเต เดชเตเดฐเดถเตเดจเดคเตเดคเต เดธเดฎเตเดชเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเตเดจเตเดจเดคเต.
เด เดฒเดพเดฌเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเตเดคเดฟเดฏเดฟเตฝ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: เดชเดเตเดเดพเดณเดฟเดฏเตเดเต เดเดพเดซเตเดเดฏเดฟเดฒเตเดเตเดเต เดเดเตเดเตพ เดเดฐเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดกเดพเดฑเตเดฑ เดชเดพเดเตเดเดฑเตเดฑเต เด เดฏเดฏเตเดเตเดเตเดจเตเดจเต, เดคเตเดเตผเดจเตเดจเต Gobblin เด เดกเดพเดฑเตเดฑเดพ เดชเดพเดเตเดเดฑเตเดฑเต HDFS-เดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต, เดคเตเดเตผเดจเตเดจเต Airflow เด เดกเดพเดฑเตเดฑเดพ เดชเดพเดเตเดเดฑเตเดฑเต เดเดเตเดคเตเดคเต ClickHouse-เตฝ เดเดเตเดจเตเดจเต. เดเดฏเตผเดซเตเดฒเต เดเดคเต เดคเดคเตเดธเดฎเดฏเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเดฟเดฒเตเดฒ เดเดจเตเดจเดคเดพเดฃเต, เดเดคเต เดทเตเดกเตเดฏเตเดณเดฟเตฝ เดเตเดฏเตเดฏเตเดจเตเดจเต: เดเดฐเต 15 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเตเด เดเดฐเต เดเตเดเตเดเด เดซเดฏเดฒเตเดเตพ เดเดเตเดคเตเดคเต เด เดต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเตเดเตเดเตผ เดเดตเดฟเดเตเดฏเตเด เดเดชเตเดชเตเดณเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดเตเดเดณเตเดเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดชเตเดฐเดเดพเดฐเด เดเดเตเดเดจเตเดฏเตเดเตเดเดฟเดฒเตเด เด
เดตเดฐเตเดเต DAG เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเตเดจเตเดจเต เดเดคเต เดฎเดพเดฑเตเดจเตเดจเต. เดเตเดเตเดฒเดฟเดเตเดเดฟเตฝ, เดเดฏเตผเดซเตเดฒเตเดฏเตเดเต เดชเดฟเดจเตเดจเตเดเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเตเดเตพเดเตเดเต เดตเดฟเดณเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจ เดเดจเตเดจเต เดเดฃเตเดเตเดจเตเดจเต เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟ experimental
, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดคเต เดญเดฏเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต, เดชเดเตเดทเต เดเดจเตเดคเตเดเตเดฏเตเดฏเดฃเด ... เด
เดคเต เดชเตเดเตเดเตเดจเตเดจเต เดเดเตเดเตเดเตเดจเตเดจเต.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดเตเดเตพ เดฎเตเดดเตเดตเตป เดชเดพเดคเดฏเตเด เดตเดฟเดตเดฐเดฟเดเตเดเตเด: เดเดฏเตผเดซเตเดฒเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดฎเตเดคเตฝ เดชเดฐเตเดเตเดทเดฃเดพเดคเตเดฎเด API เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต DAG เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต POST เด เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดตเดฐเต. เดเดเตเดเตพ เดเดฌเตเดฃเตเดเต 16.04 เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด.
1. เดเดฏเตผเดซเตเดฒเต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเตป
เดจเดฎเตเดเตเดเต Python 3 เดเด virtualenv เดเด เดเดฃเตเดเต เดเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด.
$ python3 --version
Python 3.6.6
$ virtualenv --version
15.2.0
เดเดตเดฏเดฟเดฒเตเดจเตเดจเต เดจเดทเตเดเดชเตเดชเตเดเตเดเดพเตฝ, เด เดคเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด.
เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดเดฐเต เดกเดฏเดฑเดเตโเดเดฑเดฟ เดธเตเดทเตโเดเดฟเดเตเดเดพเด, เด เดคเดฟเตฝ เดเดเตเดเตพ เดเดฏเตผเดซเตเดฒเตเดฏเตโเดเตเดเตเดชเตเดชเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดคเตเดเดฐเตเด.
$ mkdir <your name of directory>
$ cd /path/to/your/new/directory
$ virtualenv -p which python3 venv
$ source venv/bin/activate
(venv) $
เดเดฏเตผเดซเตเดฒเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด:
(venv) $ pip install airflow
เดเดเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเด เดชเดคเดฟเดชเตเดชเต: 1.10.
เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดเดฃเตเดเดพเดเตเดเดฃเด airflow_home
, DAG เดซเดฏเดฒเตเดเดณเตเด เดเดฏเตผเดซเตเดฒเต เดชเตเดฒเดเดฟเดจเตเดจเตเดเดณเตเด เดเดตเดฟเดเตเดฏเดพเดฃเต เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต. เดกเดฏเดฑเดเตเดเดฑเดฟ เดธเตเดทเตเดเดฟเดเตเด เดถเตเดทเด, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเดเตเดเดฎเดพเดเตเดเตเด AIRFLOW_HOME
.
(venv) $ cd /path/to/my/airflow/workspace
(venv) $ mkdir airflow_home
(venv) $ export AIRFLOW_HOME=<path to airflow_home>
SQLite-เตฝ เดกเดพเดฑเตเดฑเดพเดซเตเดฒเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เด เดเตเดคเตเดค เดเดเตเดเด:
(venv) $ airflow initdb
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเด airflow.db
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ.
เดเดฏเตผเดซเตเดฒเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดฏเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
$ airflow version
[2018-11-26 19:38:19,607] {__init__.py:57} INFO - Using executor SequentialExecutor
[2018-11-26 19:38:19,745] {driver.py:123} INFO - Generating grammar tables from /usr/lib/python3.6/lib2to3/Grammar.txt
[2018-11-26 19:38:19,771] {driver.py:123} INFO - Generating grammar tables from /usr/lib/python3.6/lib2to3/PatternGrammar.txt
____________ _____________
____ |__( )_________ __/__ /________ __
____ /| |_ /__ ___/_ /_ __ /_ __ _ | /| / /
___ ___ | / _ / _ __/ _ / / /_/ /_ |/ |/ /
_/_/ |_/_/ /_/ /_/ /_/ ____/____/|__/
v1.10.0
เดเดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดเดฏเตผเดซเตเดฒเต เด
เดคเดฟเดจเตเดฑเตเดคเดพเดฏ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเต airflow.cfg
ะฒ AIRFLOW_HOME
:
$ tree
.
โโโ airflow.cfg
โโโ unittests.cfg
เดเดฏเตผเดซเตเดฒเตเดฏเตเดเตเดเต เดเดฐเต เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเต เดเดฃเตเดเต. เดเดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเต เดเดคเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเด:
(venv) $ airflow webserver --port 8081
เดเดฏเตผเดซเตเดฒเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดนเตเดธเตเดฑเตเดฑเดฟเดฒเต เดชเตเตผเดเตเดเต 8081-เดฒเต เดฌเตเดฐเตเดธเดฑเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเตพ เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเต เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด: <hostname:8081>
.
2. เดชเดฐเตเดเตเดทเดฃเดพเดคเตเดฎเด API เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต
เดเดคเดฟเตฝ เดเดฏเตผเดซเตเดฒเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตโเดคเต เดชเตเดเดพเตป เดคเดฏเตเดฏเดพเดฑเดพเดฃเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดเตเดเตพ เดชเดฐเตเดเตเดทเดฃเดพเดคเตเดฎเด API เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดเตเดเดณเตเดเต เดเตเดเตเดเดฑเตเดเตพ เดชเตเดคเตเดคเดฃเดฟเดฒเดพเดฃเต เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต, เด
เดคเดฟเดจเดพเตฝ เดฒเตเดฌเตเดฐเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดเตเดคเตฝ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เด
เดคเดฟเตฝ เดเดฃเตเดเดพเดเตเด requests
.
เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ API เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพเดเตเดเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด เดคเตเดคเดฐเดฎเตเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เด เดคเดฟเดจเตเดฑเต เดเตเดฒเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต:
>>> import requests
>>> host = <your hostname>
>>> airflow_port = 8081 #ะฒ ะฝะฐัะตะผ ัะปััะฐะต ัะฐะบะพะน, ะฐ ะฟะพ ะดะตัะพะปัั 8080
>>> requests.get('http://{}:{}/{}'.format(host, airflow_port, 'api/experimental/test').text
'OK'
เดชเตเดฐเดคเดฟเดเดฐเดฃเดฎเดพเดฏเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เด เดคเตเดคเดฐเดฎเตเดฐเต เดธเดจเตเดฆเตเดถเด เดฒเดญเดฟเดเตเดเดพเตฝ, เดเดฒเตเดฒเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดพเดฃเต เดเดคเดฟเดจเตผเดคเตเดฅเด.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, DAG เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเดงเดฟเดเดพเดฐเดฟเดเดค เดเดฑเดชเตเดชเดพเดเตเดเดพเดคเต เดเดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ เดเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดฟเดฒเตเดเตเดเต เดเดเตเดเตพ เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต.
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดเตเดเตเดคเตฝ เดเดเตเดเดเตเดเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต.
เดเดฆเตเดฏเด, เดจเดฟเดเตเดเตพ เดเดคเต เดเตเตบเดซเดฟเดเดฑเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
[api]
auth_backend = airflow.contrib.auth.backends.password_auth
เดคเตเดเตผเดจเตเดจเต, เด เดกเตเดฎเดฟเตป เด เดตเดเดพเดถเดเตเดเดณเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.Admin())
>>> user.username = 'new_user_name'
>>> user.password = 'set_the_password'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดฐเต DAG เดเตเดฐเดฟเดเตผ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดธเดพเดงเดพเดฐเดฃ เด เดตเดเดพเดถเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดจเดฟเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'newprolab'
>>> user.password = 'Newprolab2019!'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()
เดเดชเตเดชเตเตพ เดเดฒเตเดฒเดพเด เดคเดฏเตเดฏเดพเดฑเดพเดฃเต.
3. เดเดฐเต POST เด เดญเตเดฏเตผเดคเตเดฅเดจ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต
POST เด เดญเตเดฏเตผเดคเตเดฅเดจ เดคเดจเตเดจเต เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเด:
>>> dag_id = newprolab
>>> url = 'http://{}:{}/{}/{}/{}'.format(host, airflow_port, 'api/experimental/dags', dag_id, 'dag_runs')
>>> data = {"conf":"{"key":"value"}"}
>>> headers = {'Content-type': 'application/json'}
>>> auth = ('newprolab', 'Newprolab2019!')
>>> uri = requests.post(url, data=json.dumps(data), headers=headers, auth=auth)
>>> uri.text
'{n "message": "Created <DagRun newprolab @ 2019-03-27 10:24:25+00:00: manual__2019-03-27T10:24:25+00:00, externally triggered: True>"n}n'
เด เดญเตเดฏเตผเดคเตเดฅเดจ เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดคเต.
เด เดคเดจเตเดธเดฐเดฟเดเตเดเต, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดกเดพเดฑเตเดฑ เดชเดพเดเตเดเดฑเตเดฑเต เดชเดฟเดเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจ เดเตเดฒเดฟเดเตเดเตเดนเตเดธเต เดเตเดฌเดฟเดณเดฟเดฒเตเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดพเดจเตเด เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเดพเดจเตเด เดเดเตเดเตพ DAG-เดเตเดเต เดเตเดฑเดเตเดเต เดธเดฎเดฏเด เดจเตฝเดเตเดจเตเดจเต.
เดชเดฐเดฟเดถเตเดงเดจ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ.
เด เดตเดฒเดเดฌเด: www.habr.com