GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - avtocod/python-developer-test-task: Python developer test task

BranchesTags
Open more actions menu

Latest commit

 

History

6 Commits
6 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
tests
tests
 
 
.dockerignore
.dockerignore
 
 
.editorconfig
.editorconfig
 
 
.gitignore
.gitignore
 
 
Dockerfile
Dockerfile
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
docker-compose.yml
docker-compose.yml
 
 
requirements-dev.txt
requirements-dev.txt
 
 
requirements.txt
requirements.txt
 
 

Repository files navigation

Тестовое задание для python-разработчика

Project language Docker Build Status Do something awesome

Описание

Реализовать сервис, который обходит произвольный сайт с глубиной до 2 и сохраняет html, url и title страницы в хранилище.

Примеры сайтов:

  • https://ria.ru
  • http://www.vesti.ru
  • http://echo.msk.ru
  • http://tass.ru/ural
  • https://lenta.ru
  • и любой другой, на котором есть ссылки

Оптимизировать прогрузку по потреблению памяти и по времени. Замерить время выполнения и потребление памяти загрузки.

При depth=0 необходимо сохранить html, title, url исходного веб-сайта.

На каждом depth=i+1 качаем страницы ссылок с i страницы (то есть глубина 2 это - главная, ссылки на главной и ссылки на страницах ссылок с главной).

CLI

  • По урлу сайта и глубине обхода загружаются данные.
  • По урлу сайта из хранилища можно получить n прогруженных страниц (url и title).

Пример:

spider.py load http://www.vesti.ru/ --depth 2
>> ok, execution time: 10s, peak memory usage: 100 Mb
spider.py get http://www.vesti.ru/ -n 2
>> http://www.vesti.ru/news/: "Вести.Ru: новости, видео и фото дня"
>> http://www.vestifinance.ru/: "Вести Экономика: Главные события российской и мировой экономики, деловые новости,  фондовый рынок"

Требования

  • Язык реализации python3.6+
  • Выбор хранилища произвольный (PostgreSQL/Redis/ElasticSearch и любой другой на ваш выбор)
  • Стек технологий произвольный
  • Выбор библиотек произвольный
  • Решение оформить как проект на любом git-сервисе
  • Описать в README.md установку, запуск, python и другие зависимости для запуска

Было бы большим плюсом

  • Docker multistage build
  • Run Docker as a non-root user
  • Написать тесты при помощи pytest/unittest и любой другой на ваш выбор

Как начать выполнение тестового задания?

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

Данный репозиторий уже содержит Dockerfile, docker-compose.yml и Makefile для быстрого запуска приложения силами docker (нет необходимости устанавливать python и пр. локально). Всё, что необходимо - это установленные локально docker и docker-compose. После клонирования репозитория просто выполните docker-compose up -d и/или натравите PyCharm на docker-compose - и можно приступать к написанию полезного кода.

Результат выполнения

  • Ссылку на репозиторий с вашей реализацией необходимо отправить нашему HR или TeamLead, от которого вы получили ссылку на данный репозиторий.

  • Приложение должно успешно запускаться после выполнения:

$ git clone ...
$ make build
$ docker-compose up -d
$ docker-compose run --rm app ./app
  • Проходить все тесты (при их наличии).

Если для запуска приожения потребуется другой набор команд - обязательно отразите это в файле README.md вашего репозитория.

Если в процессе выполнения у вас возникнут какие-либо неразрешимые вопросы - создайте соответствующий issue в данном репозитории. На вопросы касательно деталей реализации ("А лучше так и так?") - вероятнее всего вы получите ответ "Как вы посчитаете правильнее".

About

Python developer test task

Topics

tasktest

Resources

Readme

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

1 star

Watchers

0 watching

Forks

2 forks
Report repository

Releases

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.