Skip to content

kephircheek/madam5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

madam5

Madam5 - веб сервис на Python3 для вычисления MD5 hash от файла, расположеного в сети Интернет.


Сервер написан на python3 с помощью фреймворка Flask. Скачивание файла и подсчет hash происходит в фоновом режиме благодаря Redis. Для хранения запросов используется встраиваемая СУБД SQLite.

Установка

  1. Redis - хранилище данных и брокер сообщений
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make

В MacOS можно так

brew install redis
  1. RQ - простая очередь для Redis
  2. FLask - фреймворк для создания веб-приложений
pip install -r requirements.txt

Запуск

  1. Запускаем Redis
redis-server
  1. Запускаем рабочий процесс в папке с файлом server.py (можно создать несколько рабочих процессов)
rq worker
  1. Запускаем приложение server.py (по умолчанию: host=localhost, port=8000)
python server.py

Функциональность

POST

Запрос на обраоку файла делается через форму с одним обязательным полем url (поле email необязательное). Пример:

curl -X POST -d "url=http://mysite.com/myfile.data" http://localhost:8000/submit

Или

curl -X POST -d "email=myemail@mailbox.com&url=http://mysite.com/myfile.data" http://localhost:8000/submit

В ответ сервер выдает uuid запроса. Пример:

curl -X POST -d "url=http://link" http://localhost:8000/submit

Ответ сервера:

{"id":"22b16fc8-3a4b-4a8e-aa88-e65bb57b3358"}

GET

check

Получение статуса можно сделать с помощью id

curl -X GET http://localhost:8000/check?id=22b16fc8-3a4b-4a8e-aa88-e65bb57b3358

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

{"status":"request error"}

Это значит в запросе была передана плохая ссылка (ошибка requests.get()).

Если ссылка правильная:

curl -X POST -d "url=https://i.ytimg.com/vi/r4OiHPWpNxU/maxresdefault.jpg" http://localhost:8000/submit

Ответ сервера:

{"id":"2e1b5cd5-121e-455e-a56e-335fa1902122"}

Статус:

curl -X GET http://localhost:8000/check?id=2e1b5cd5-121e-455e-a56e-335fa1902122

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

{"email":null,"md5":"c115069008b18a79ff03e8c9256e5161","status":"done","url":"https://i.ytimg.com/vi/r4OiHPWpNxU/maxresdefault.jpg","uuid":"2e1b5cd5-121e-455e-a56e-335fa1902122"}

Также сервер может ответить:

{"status":"running"}

Это занчит, что запрос в очереди или выполняется.

history

Историю всех запросов можно посмотреть с помощью

curl -X GET http://localhost:8000/history

полезные ссылки

About

Demo: Restfull Flask app with background Redis tasks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages