Сервис по сбору информации о показателях климатических условий заданных мест для дальнейшего использования в задачах компании.
Информация собирается с сайта https://openweathermap.org/ для 50 самых больших городов мира. Запись в базу данных ведется каждый час.
Список городов собирается с заданного файла с данными. Для каждого города сохраняется:
- Название;
- Координата северной широты;
- Координата восточной долготы;
- Численность населения.
Сайт https://openweathermap.org/ позволяет получить большое количетсво параметров климатических условий. В настоящем проекте для каждого города, по заданным координатам, сохряняются следующие данные (текущие значения на время сохранения):
- Температура воздуха;
- Темперутара воздуха "по ощущениям";
- Влажность воздуха.
Все данные передаются серверу в метрической системе.
- Библиотека Pydantic
- Библиотека для валидации данных, полученных из файла (для списка городов) или по api (для погодных данных)
- SQLAlchemy
- Для работы с базой данных использована SQLAlchemy
- База данных PostgeSQL
- Данная база данных выбрана как одна из самых удобных и популярных баз реляционного типа;
- В проекте использованы две таблицы. Основая с информацие о погоде и дополнительная с информацией о городах. Данная структура является самой удобной, отвечающей поставленной задаче;
- Язык програмирования и версия Python 3.10
- Данная версия языка поддерживает все необходимые версии библиотек;
- Библиотека schedule
- Для периодического обращения сервиса для получения данных о погоде использованная библиотека schedule, позволяющая настроить расписание работы необхолимых функций;
- В приложении добавлена возможность онлайн мониторинга запросов к базе данных с помощью сервиса Sentry.
- Интструкция по пользованию серисом тут
-
Создаем .env и заполняем переменные окружения:
API_KEY = ваш api-ключ от сайта https://openweathermap.org/
DATABASE_URL = postgresql://postgres:postgres@db:5432/postgres
SENTRY_DSN = ваш dsn-ключ проекта на sentry.io
DB_ENGINE = postgres
DB_NAME = postgres
POSTGRES_USER = postgres
POSTGRES_PASSWORD = postgres
DB_HOST = db
DB_PORT = 5432
-
Устанавливаем
Docker
-
Собираем
docker-compose
docker-compose up -d --build
-
Останавливаем и удаляем контейнеры:
docker-compose down -v