FinDataBot - Приложение для обработки данных о финансовых тикерах

Это приложение предназначено для асинхронной обработки данных о финансовых тикерах с использованием Prefect 3.0 и asyncio. Оно загружает данные через API, обрабатывает их с помощью pandas и отправляет уведомления в Telegram чат.

Требования

Перед началом убедитесь, что у вас установлены следующие инструменты:

Установка

1. Клонирование репозитория

Склонируйте репозиторий с исходным кодом приложения:

git clone https://github.com/huongchik/Prefect-Project.git
cd fin_data_bot

2. Переменные окружения

Создайте файл .env в корневой директории и укажите в нем следующие переменные окружения:

CSV_FILE_PATH=../data/CSV.csv
BOT_TOKEN=your_telegram_bot_token
USERNAME=your_telegram_username

3. Telegram bot

Обязательно перед началом запуска у своего бота нажмите на /start

Запуск приложения без использования Docker

1. Запуск Prefect сервера (при использовании локальной оркестрации)

Для локальной оркестрации необходимо запустить сервер Prefect:

prefect server start

2. Настройка переменных окружения

Создайте файл .env в корневой директории проекта и укажите в нем необходимые переменные окружения:

CSV_FILE_PATH=/app/data/CSV.csv
BOT_TOKEN=your_telegram_bot_token
USERNAME=your_telegram_username

3. Деплой Prefect Flow:

Деплой Flow в Prefect::

prefect deploy -p flows/data_processing_flow.py:main_flow -n "Data Processing Flow" --pool default

Эта команда запускает контейнер в фоновом режиме. Приложение начнет выполнение, обработает данные по тикерам, сохранит их в JSON файлы и отправит уведомление в ваш Telegram чат по завершении.

4. Запуск основного скрипта

После того, как сервер и worker будут запущены, выполните следующий скрипт для обработки данных:

python flows/data_processing_flow.py

Приложение начнет выполнение, загрузит тикеры из CSV файла, выполнит запросы к API для получения данных, обработает их с помощью pandas и сохранит результат в формате JSON. По завершении обработки будет отправлено уведомление в ваш Telegram чат.

Запуск приложения с использованием Docker

1. Сборка Docker образа

Соберите Docker-образ приложения. Убедитесь, что находитесь в корневой директории проекта, где расположен Dockerfile:

docker build -t fin_data_bot .

2. Настройка переменных окружения

Создайте файл .env в корневой директории проекта и укажите в нем необходимые переменные окружения:

CSV_FILE_PATH=/app/data/CSV.csv
BOT_TOKEN=your_telegram_bot_token
USERNAME=your_telegram_username

3. Запуск контейнера

Запустите Docker-контейнер с использованием собранного образа и файла .env:

docker run -d --env-file .env fin_data_bot

Эта команда запускает контейнер в фоновом режиме. Приложение начнет выполнение, обработает данные по тикерам, сохранит их в JSON файлы и отправит уведомление в ваш Telegram чат по завершении.

4. Проверка логов

Для проверки логов контейнера выполните следующую команду:

docker logs <container_id>

Чтобы узнать container_id, выполните команду:

docker ps

Это позволит вам увидеть, как выполняется процесс обработки данных и отправки уведомлений.

5. Остановка контейнера

Чтобы остановить контейнер, выполните:

docker stop <container_id>

Описание работы приложения

  1. Приложение считывает тикеры из CSV файла, указанные в переменной CSV_FILE_PATH.
  2. Для каждого тикера оно делает запрос к API (например, Alpha Vantage).
  3. Полученные данные обрабатываются с помощью pandas и сохраняются в формате JSON.
  4. По завершении обработки отправляется уведомление в Telegram с использованием бота.

Дополнительно

  • Вы можете регулировать количество параллельных запросов, исходя из латентности API, что позволяет гибко управлять нагрузкой на внешние сервисы.
  • Асинхронность выполнения задач реализована через asyncio, что ускоряет обработку данных.

Описание структуры проекта

  • flows/data_processing_flow.py — основной скрипт, который выполняет загрузку данных по тикерам, их обработку и отправку уведомлений в Telegram.
  • .env — файл с переменными окружения, в котором задаются настройки для пути к CSV файлу, токену Telegram бота и имени пользователя.
  • CSV.csv — CSV файл, в котором перечислены тикеры акций для обработки.
  • Dockerfile — файл, содержащий инструкции для сборки Docker-образа.
  • requirements.txt — файл со списком зависимостей, необходимых для работы приложения.