Skip to content

femarko/Event_loop_Asyncio_HW

Repository files navigation

Учебная задача «Event loop. Asyncio»

Нетология

Python-разработчик с нуля

Задача

Асинхронно взаимодействуя с соответствующим API (SWAPI), получить информацию обо всех персонажах "Зведных войн" и записать информацию в базу данных.

Необходимо выгрузить cледующие поля:
id - ID персонажа
birth_year
eye_color
films - строка с названиями фильмов через запятую
gender
hair_color
height
homeworld
mass
name
skin_color
species - строка с названиями типов через запятую
starships - строка с названиями кораблей через запятую
vehicles - строка с названиями транспорта через запятую

Решение

Разработано python-приложение, асинхронно отправляющее HTTP-запросы к SWAPI и асинхронно записывающее полученные данные в базу postgres.

Использованные инструменты

python 3.10, asyncio, aiohttp, more-itertools, sqlalchemy, postgresql, pgadmin, docker, docker-compose.

Запуск и работа приложения

  1. Создать файл .env, где прописать переменные окружения. Образец: .env.example.
  2. docker-compose up -d - запуск приложения на локальном хосте
  3. http://localhost:5051/ - посмотреть таблицу базы данных
  4. docker-compose down - остановить приложение

Комментарии к решению задачи

Входящие данные и условия задачи:

В модуле input_data собраны условия задачи и необходимые входящие данные:

  • url
  • поля персонажа, которые нужно записать в БД
  • поля, которые нужно получить дополнительно
  • CHUNK_SIZE

Функции

Все функции, кроме init_db() и main(), определены в модуле funcs.
Функция init_db() определена в модуле models.
Функция main() определена в модуле main.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published