Написать простой веб-сервис, который:
- принимает POST-запрос
- получает данные (запрошенное количество вопросов) по API от jservice.io
- пытается сохранить полученное в БД
- если полученные данные не уникальны, повторяет предыдущие два шага
- запрашивающему из шага №1 возвращает последний сохраненный до момента получения от него запроса вопрос
- Установить Docker Engine и Docker Compose для вашей ОС
- Клонировать этот репозиторий:
Если не установленgit clone https://github.com/navolotsky/bewise-test-task.git
git
, то можно так:docker run --name nbewise_repo alpine/git clone https://github.com/navolotsky/bewise-test-task.git && docker cp nbewise_repo:/git/bewise-test-task/ . && docker rm nbewise_repo
- Перейти в папку проекта
cd bewise-test-task
- Запустить сервисы (образ приложения будет собран автоматически)
docker compose up
- Можно выполнять POST-запросы на
http://localhost:8000
- При изменении исходников в папке
bewise_test_task
dev-сервер будет перезапускаться автоматически - При внесении изменений в
Dockerfile
не забывать пересобирать образ приложенияА затем перезапускать сервисыdocker compose build
docker compose up
POST-запросы на /
c json-телом вида {"questions_num": integer}
>>> import requests
>>> from pprint import pprint
>>>
>>> # первый запрос с пустой БД
>>> response = requests.request("POST", "http://localhost:8000", json={"questions_num": 3})
>>> pprint(response.json())
{'last_saved_question': {}}
>>>
>>> # возвращает последний сохраненный в БД вопрос
>>> response = requests.request("POST", "http://localhost:8000", json={"questions_num": 3})
>>> pprint(response.json())
{'last_saved_question': {'airdate': '2000-02-04 12:00:00',
'answer': 'Barbara Bush',
'created_at': '2014-02-11 23:08:31',
'id': 3,
'pulled_at': '2022-05-08 20:17:11',
'question': 'In 1992 she became the 1st first lady to '
'deliver a major address at a national '
'political convention',
'question_id': 37949}}
>>>
>>> # пример ошибки: лимит jservice.io равен 100
>>> response = requests.request("POST", "http://localhost:8000", json={"questions_num": 101})
>>> pprint(response.json())
{'field_errors': {'questions_num': 'must be an integer in the range of [1, '
'100]'}}
>>>