Skip to content

Padking/distance-calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distance Calculator

Web API сервис кратчайших путей

Описание

Сервис расчитывает кратчайшее расстояние между 2-мя локациями

Начало работы

Особенности

  • ограничения:
    • матрица смежности бинарного файла размерностью 50х50
    • диапазон порядковых номеров локаций для POST-запроса - от 0 до 49 включительно
  • источник данных: бинарный файл,
  • статус проекта: учебный.

Пример исходных данных

[0 7 8 5 2 7 4 5 3 0 7 1 0 6 9 8 0 0 5 1 3 4 6 1 4 6 0 8 3 2 3 5 7 4 7 3 7
 5 5 6 2 4 8 0 2 5 1 4 0 0]
[7 0 5 7 8 1 5 2 7 2 8 2 4 8 3 6 1 2 4 4 6 7 8 5 8 2 7 5 3 5 4 4 2 3 5 4 9
 4 9 4 9 3 2 7 1 8 6 2 2 7]
  • формат POST-запроса:
cities = {
    'from_city': 15,
    'to_city': 1,
}

Используемые технологии

Структура проекта

2 эндпоинта: кратчайшего расстояния и оценки "здоровья" сервиса

Требования к окружению

  • Python 3.7 и выше,
  • Linux/Windows.

Установка

  • Клонировать проект:
git clone https://github.com/Padking/distance-calculator.git
cd distance-calculator
  • Создать каталог виртуального окружения (ВО)*, связать каталоги ВО и проекта, установить зависимости:
mkvirtualenv -p <path to python> <name of virtualenv>
setvirtualenvproject <path to virtualenv> <path to project>
pip install -r requirements.txt
  • установить переменные окружения для Flask-проекта

  • наполнить БД информацией о кратчайших расстояниях между локациями:

cd distance_calculator/
python db.py
  • запустить сервис,
  • в новом окне терминала выполнить запрос от клиента (К),
  • убедиться в наличии ответа.
python app.py
python client.py

* с использованием virtualenvwrapper

Пример запуска

  • старт Flask-проекта:
$ python app.py
 * Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
  • корректный ответ:
$ python client.py
{'distance': 2}
  • некорректный ответ:
$ python client.py
{'status': '400. Invalid input data'}

Тестирование

Примеры тестовых сценариев

About

Web API сервис кратчайших путей

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages