Madam5 - веб сервис на Python3
для вычисления MD5 hash от файла, расположеного в сети Интернет.
Сервер написан на python3
с помощью фреймворка Flask
.
Скачивание файла и подсчет hash происходит в фоновом режиме благодаря Redis
.
Для хранения запросов используется встраиваемая СУБД SQLite.
- Redis - хранилище данных и брокер сообщений
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
В MacOS можно так
brew install redis
pip install -r requirements.txt
- Запускаем Redis
redis-server
- Запускаем рабочий процесс в папке с файлом
server.py
(можно создать несколько рабочих процессов)
rq worker
- Запускаем приложение
server.py
(по умолчанию:host=localhost
,port=8000
)
python server.py
Запрос на обраоку файла делается через форму с одним обязательным полем url
(поле email
необязательное). Пример:
curl -X POST -d "url=http://mysite.com/myfile.data" http://localhost:8000/submit
Или
curl -X POST -d "[email protected]&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"}
Получение статуса можно сделать с помощью 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"}
Это занчит, что запрос в очереди или выполняется.
Историю всех запросов можно посмотреть с помощью
curl -X GET http://localhost:8000/history