Это приложение предназначено для асинхронной обработки данных о финансовых тикерах с использованием Prefect 3.0 и asyncio. Оно загружает данные через API, обрабатывает их с помощью pandas и отправляет уведомления в Telegram чат.
Перед началом убедитесь, что у вас установлены следующие инструменты:
- Docker
- Python 3.11 (если запуск без Docker)
Склонируйте репозиторий с исходным кодом приложения:
git clone https://github.com/huongchik/Prefect-Project.git
cd fin_data_bot
Создайте файл .env в корневой директории и укажите в нем следующие переменные окружения:
CSV_FILE_PATH=../data/CSV.csv
BOT_TOKEN=your_telegram_bot_token
USERNAME=your_telegram_username
Обязательно перед началом запуска у своего бота нажмите на /start
Для локальной оркестрации необходимо запустить сервер Prefect:
prefect server start
Создайте файл .env
в корневой директории проекта и укажите в нем необходимые переменные окружения:
CSV_FILE_PATH=/app/data/CSV.csv
BOT_TOKEN=your_telegram_bot_token
USERNAME=your_telegram_username
Деплой Flow в Prefect::
prefect deploy -p flows/data_processing_flow.py:main_flow -n "Data Processing Flow" --pool default
Эта команда запускает контейнер в фоновом режиме. Приложение начнет выполнение, обработает данные по тикерам, сохранит их в JSON файлы и отправит уведомление в ваш Telegram чат по завершении.
После того, как сервер и worker будут запущены, выполните следующий скрипт для обработки данных:
python flows/data_processing_flow.py
Приложение начнет выполнение, загрузит тикеры из CSV файла, выполнит запросы к API для получения данных, обработает их с помощью pandas и сохранит результат в формате JSON. По завершении обработки будет отправлено уведомление в ваш Telegram чат.
Соберите Docker-образ приложения. Убедитесь, что находитесь в корневой директории проекта, где расположен Dockerfile:
docker build -t fin_data_bot .
Создайте файл .env
в корневой директории проекта и укажите в нем необходимые переменные окружения:
CSV_FILE_PATH=/app/data/CSV.csv
BOT_TOKEN=your_telegram_bot_token
USERNAME=your_telegram_username
Запустите Docker-контейнер с использованием собранного образа и файла .env
:
docker run -d --env-file .env fin_data_bot
Эта команда запускает контейнер в фоновом режиме. Приложение начнет выполнение, обработает данные по тикерам, сохранит их в JSON файлы и отправит уведомление в ваш Telegram чат по завершении.
Для проверки логов контейнера выполните следующую команду:
docker logs <container_id>
Чтобы узнать container_id, выполните команду:
docker ps
Это позволит вам увидеть, как выполняется процесс обработки данных и отправки уведомлений.
Чтобы остановить контейнер, выполните:
docker stop <container_id>
- Приложение считывает тикеры из CSV файла, указанные в переменной CSV_FILE_PATH.
- Для каждого тикера оно делает запрос к API (например, Alpha Vantage).
- Полученные данные обрабатываются с помощью pandas и сохраняются в формате JSON.
- По завершении обработки отправляется уведомление в Telegram с использованием бота.
- Вы можете регулировать количество параллельных запросов, исходя из латентности API, что позволяет гибко управлять нагрузкой на внешние сервисы.
- Асинхронность выполнения задач реализована через asyncio, что ускоряет обработку данных.
flows/data_processing_flow.py
— основной скрипт, который выполняет загрузку данных по тикерам, их обработку и отправку уведомлений в Telegram..env
— файл с переменными окружения, в котором задаются настройки для пути к CSV файлу, токену Telegram бота и имени пользователя.CSV.csv
— CSV файл, в котором перечислены тикеры акций для обработки.Dockerfile
— файл, содержащий инструкции для сборки Docker-образа.requirements.txt
— файл со списком зависимостей, необходимых для работы приложения.