diff --git a/static_messages/students.txt b/static_messages/students.txt index dc1a9e9e7093f2de1c1b42a834486e157f347f8a..f302385adc4f8d69959632ac5bbf891c7cd4ad7d 100644 --- a/static_messages/students.txt +++ b/static_messages/students.txt @@ -1,11 +1,40 @@ .Привет! Ðиже предÑтавлена Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾ курÑу! -ÐадеÑÑŒ ты уже Ñоздал приложение на Django Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑŠÑвлениÑми. -Теперь Ñ‚Ð²Ð¾Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° напиÑать ÑÐµÑ€Ð²Ð¸Ñ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ ÑŽÐ·ÐµÑ€Ð°Ð¼Ð¸. - -Вот каким требованиÑм должен отвечать ÑÐµÑ€Ð²Ð¸Ñ ÑŽÐ·ÐµÑ€Ð¾Ð²: -1) Ð¡ÐµÑ€Ð²Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть напиÑан на Ñтеке aiohttp+SQLAlchemy+Alembic(Ð”Ð»Ñ Ð¼Ð¸Ð³Ñ€Ð°Ñ†Ð¸Ð¹). -2) ЕÑть ендпоинты Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации, логина, логаута, обновлении и Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о пользователе. -3) ПредуÑтротрен механихм ÑеÑÑий. Ð”Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ пользователей должен иÑпользоватьÑÑ JWT. -4) Реализовать механизм ÑеÑÑий, как показано в [диаграммах](https://drive.google.com/file/d/1k6TBDraBoZ8wK2tKDp6tFqSZoE650abS/view?usp=sharing). -5) Во вÑех Ñндпоинтах (кроме логина) валидировать корректноÑть токенов. +Теперь у Ñ‚ÐµÐ±Ñ ÑƒÐ¶Ðµ имеетÑÑ Ñолидный набор ÑервиÑов, но Ñтого ещё мало Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñ†ÐµÐ½Ð½Ð¾Ð³Ð¾ приложениÑ. + +Ð’ текущем задании потребуетÑÑ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ñ‚ÑŒ целых 2 микроÑервиÑа. + +1) Ð¡ÐµÑ€Ð²Ð¸Ñ Ñ€Ð°ÑÑылки пиÑем. +Его задача ÑоÑтоит в том, чтобы раÑÑылать ребÑтам пиÑьма, **что довольно очевидно**. +Однако, кроме функционала непоÑредÑтвенно раÑÑылки в данном ÑервиÑе можно Ñоздавать шаблоны пиÑем. +Работает Ñто Ñледующим образом. Пользователь ÑервиÑа отÑылает POST запроÑ, в котором указано название шаблона +и текÑÑ‚, непоÑредÑтвенно. Ð’ текÑте шаблона можно иÑпользовать нотацию как в format-Ñтроках питона. +Ðапример: "Привет, {name}. Я знаю, где ты живешь". +Также можно поÑмотреть вÑе Ñохраненные шаблоны. ДобавлÑть удаление или нет - решать вам. +Ртеперь о раÑÑылке. Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ‚ÑÑ Ð²Ñ‹Ñоконагруженным и поÑтому раÑÑылка оÑущеÑтвлÑетÑÑ Ñ‚Ð¾Ð³Ð´Ð°, когда поÑвлÑетÑÑ +Ñообщение в очереди RabbitMQ. + +2) Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¼Ð¾Ð½Ð¸Ñ‚Ð¾Ñ€Ð¸Ð½Ð³Ð°. +Данный ÑÐµÑ€Ð²Ð¸Ñ Ð½ÑƒÐ¶ÐµÐ½ только Ð´Ð»Ñ Ñбора данных по работе ÑиÑтемы, удалÑть оттуда ничего нельзÑ. +Ðтот ÑÐµÑ€Ð²Ð¸Ñ Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð¸Ñ€ÑƒÐµÑ‚ÑÑ Ð²Ð¾ вÑе оÑтальные ÑервиÑÑ‹ Ñледующим образом: +ОтправлÑетÑÑ Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð² celery на добавление запиÑи о Ñобытии и Ñто Ñобытие запиÑываетÑÑ Ð² базу данных +ÑервиÑа мониторинга. Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¸Ð¼ÐµÑŽÑ‚ Ñледующую Ñтруктуру: +```{ + "request_timestamp": <datetime>, + "service": <str>, + "url": <str>, + "status_code": <int>, + "response_time": <datetime> +}``` +Теперь о параметрах: +url -> Урл, по которому был запроÑ; +service -> Ðаименование ÑервиÑа; +status_code -> ВернувшийÑÑ ÐºÐ¾Ð´ запроÑа; +response_time -> Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ запроÑа; +request_timestamp -> Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° обработки запроÑа. + +Оба ÑервиÑа пишутÑÑ Ð½Ð° [fastapi](https://fastapi.tiangolo.com/) c [ORM GINO](https://python-gino.org/docs/en/1.0/). +Полезные ÑÑылки: +* [Что такое functools.wraps](https://docs.python.org/3.8/library/functools.html#functools.wraps); +* [Как пиÑать Ñервер Ñ FastAPI и GINO](https://python-gino.org/docs/en/1.0/tutorials/fastapi.html); +* [Штука удобнее чем чиÑтый pip (Советую)](https://python-poetry.org/).