Схема проекта: Parse
AirFlow
dags: задачи которые выполняем по расписанию.
plugins: основной код проекта.
plugins/utils/db.py: запись DataFrame в базу данных.
plugins/utils/parse_<name>.py: парсеры сайтов.
plugins/utils/tools.py: общие функции для парсеров.
plugins/airflow.cfg: конфигурационный файл для AirFlow.
plugins/Dockerfile: докерфайл для построения AirFlow, окружение
строиться в нем.
plugins/entrypoint.sh: запускает работу AirFlow, запуск прописан
в plugins/Dockerfile.
plugins/unittests.cfg: юниттесты для AirFlow.
plugins/webserver_config.py: конфигурационный файл для AirFlow.
Другие
docker-compose.yml: сборка Docker микросервисов.
poetry.lock & pyproject.toml: конфигурационные файлы менеджера пакетов poetry.
Требования для AirFlow.
Установить Docker on Linux: https://docs.docker.com/engine/install/ubuntu/.
Установить Docker on Windows: https://docs.docker.com/desktop/windows/install/
Установить Docker Compose: https://docs.docker.com/compose/install/
Install poetry
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | pythonAdd path to poetry
export PATH="$HOME/.poetry/bin:$PATH"Войти в дирректорию с файлом .toml и установить окружение:
poetry installВойти в окружение:
poetry shellДалее работаем в созданном окружении.
Переходим в дирректорию, где лежит файл docker-compose.yml. В консоле
вбиваем команду:
docker-compose up --build -dПосле чего должны подняться 3 контейнера, проверить можно командой:
docker psДолжно быть три ocker контейнера:
<name_project>_airflow_1: сервис AirFlow.<name_project>_database_1: база мета-данных для AirFlow.<name_project>_postgres_1: база данных.
Необходимо войти в контейнер с AirFlow:
docker exec -it <name_container> bashВнутри контейнера создаем юзера:
airflow users create -e [email protected] -f airflow -l airflow -p test -r Admin -u userВбиваем в браузер localhost:8080 и логинимся. Логин и пароль мы указывали
на предыдущем шаге, при создании юзера.
Перед тем как добавлять DAGs, необходимо создать соединение с базой данных
в интерфейсе AirFlow. Заходим в интерфейс AirFlow, вверху в панеле меню нажимаем
Admin > Connections, далее нажимаем на +.
Заполняем поля
Connection id: <any name> (это будет наш CONN_ID в /dags/load_<any_name>.py)
Connection Type: Postgress
Host: postgres (docker-compose.yml > название контейнера (в нашем случае postgres)
Schema: from POSTGRES_DB in docker-compose.yml
Login: from POSTGRES_USER in docker-compose.yml
name
Password: from POSTGRES_PASSWORD in docker-compose.yml
Port: 5432 from docker-compose.yml > postgres > ports
Сохраняем. После этого проект готов к работе.