Skip to content

Latest commit

 

History

History
67 lines (54 loc) · 3 KB

python.md

File metadata and controls

67 lines (54 loc) · 3 KB

Тестовое задание для позиции Python разработчик

Описание

Написать веб. сервис использующий Github REST API и предоставляющиий API c информацией о самых популярных (наибольшее кол-во stars) репозиториях пользователей.

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

Задача

  1. Реализовать сервис с API endpoint, возвращающий информацию о самых популярных (имеющих наибольшее количество stars) репозиториях пользователя (находящихся на его аккаунте). Endpoint должен принимать Github username пользователя, максимальное кол-во результатов (по умолчанию 10) и возвращать список с информацией о репозиториях (id, name, stars, url) отсортированных по кол-ву звезд.

    Пример запроса (для юзера https://github.com/wkentaro):

    HTTP GET /api/top/wkentaro?limit=4
    
    [
       {
          "id": 58374888,
          "name": "labelme",
          "stars": 7560,
          "html_url": "https://github.com/wkentaro/labelme"
       },
       {
          "id": 44421756,
          "name": "gdown",
          "stars": 1485,
          "html_url": "https://github.com/wkentaro/gdown"
       },
       {
          "id": 82214976,
          "name": "pytorch-fcn",
          "stars": 1480,
          "html_url": "https://github.com/wkentaro/pytorch-fcn"
       },
       {
          "id": 91914165,
          "name": "pytorch-for-numpy-users",
          "stars": 582,
          "html_url": "https://github.com/wkentaro/pytorch-for-numpy-users"
       }
    ]
    

    Подумайте какие ситуации должны обрабатываться.

  2. Реализовать кеширование результатов (хранить данные в sqlite, время жизни кеша 1 час). Должен использоваться кеш, если данные в нём актуальны, в противном случае после выполнения запроса кеш должен быть обновлен.

  3. Добавить тесты в проект

Требования

  • Python 3.7+
  • Использовать любой асинхронный (asyncio) фреймворк
  • Результаты должны быть представлены в виде ссылки на github репозиторий
  • Репозиторий должен содержать инструкции по сборке (запуску) приложения и тестов