diff --git a/static_messages/students.txt b/static_messages/students.txt index f302385adc4f8d69959632ac5bbf891c7cd4ad7d..492a4a8ec1d8c20c929f39c83032718071519eed 100644 --- a/static_messages/students.txt +++ b/static_messages/students.txt @@ -1,40 +1,20 @@ .Привет! Ðиже предÑтавлена Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾ курÑу! -Теперь у Ñ‚ÐµÐ±Ñ ÑƒÐ¶Ðµ имеетÑÑ Ñолидный набор ÑервиÑов, но Ñтого ещё мало Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñ†ÐµÐ½Ð½Ð¾Ð³Ð¾ приложениÑ. +Ðа Ñтой неделе надо будет реализовать интеграционный ÑервиÑ, +который будет взаимодейÑтвовать Ñ API каждого ÑервиÑа, а также потребуетÑÑ Ð´Ð¾Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ ÑÐµÑ€Ð²Ð¸Ñ goods. -Ð’ текущем задании потребуетÑÑ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ñ‚ÑŒ целых 2 микроÑервиÑа. +Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° требуетÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ поле `user_id` в модель объÑвлениÑ. +И на любом фреймворке, который вам понравилÑÑ, надо напиÑать ÑервиÑ, который взаимодейÑтвет Ñо вÑеми микроÑервиÑами, которые были напиÑаны ранее. -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 -> Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° обработки запроÑа. +ЕÑть Ñндпоинты Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ ÑŽÐ·ÐµÑ€Ð°Ð¼Ð¸, которые, по Ñути, прокÑируют запроÑÑ‹ в ÑÐµÑ€Ð²Ð¸Ñ `user_service`. Ðо потребуетÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ логику региÑтрации +(Ð”Ð»Ñ Ñтого надо будет добавить ещё один redis). При запроÑе региÑтрации генерируетÑÑ Ñ‚Ð¾ÐºÐµÐ½ (uuid4) и отправлÑетÑÑ Ð¿Ð¸Ñьмо на почту (Ð’ пиÑьме находитÑÑ ÑÑылка Ñ Ñ‚Ð¾ÐºÐµÐ½Ð¾Ð¼). Ð’ новый redis как ключ кладетÑÑ Ñтот токен, +а как значение данные пользователÑ. ПоÑле того как пользователь перешел по ÑÑылке в пиÑьме, ÑоздаетÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒ. -Оба ÑервиÑа пишутÑÑ Ð½Ð° [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/). +ПоÑле работы каждого Ñндпоинта отправлÑетÑÑ ÑтатиÑтика в ÑÐµÑ€Ð²Ð¸Ñ Ð¼Ð¾Ð½Ð¸Ñ‚Ð¾Ñ€Ð¸Ð½Ð³Ð°. (Лучше вÑего Ñделать Ñто через middleware). + +Также ÑÐµÑ€Ð²Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑтавлÑет методы API Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð¾Ð±ÑŠÑвлениÑми. Редактирование и удаление объÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ только пользователю, который его Ñоздал. +Также каждый 10-й проÑмотр объÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑетÑÑ Ð½Ð° почту пользователÑ. + +По вÑем вопроÑам пишите @s3rius_san и @kolaer.