Перейти к содержимому
← Все работы

API для публикаций

Бэкенд для блога в духе Medium. Статьи, теги, комментарии и лайки; почтовые сценарии и синхронизация счётчиков вынесены в Celery-воркер, а не в запрос.

Что в нём есть

Статьи со слагами, теги, поиск, лента и лайки от каждого пользователя. Комментарии с авторизацией, которая отличает автора комментария от автора статьи. JWT-аутентификация с access- и refresh-токенами, подтверждение почты и сброс пароля по шестизначным кодам.

На что стоит посмотреть

В запросе не происходит ничего медленного. Отправка почты уходит в Celery. Туда же — периодическая задача, которая переносит счётчики просмотров и лайков из Redis в Postgres. Пользователь, ждущий HTTP-ответа, не должен ждать SMTP-сервер.

Счётчики сначала живут в Redis. Та же логика, что и в стриминговом проекте: счётчик, который увеличивается при каждом чтении, не место в реляционной базе на горячем пути.

Ограничение частоты стоит на эндпоинтах аутентификации — то есть там, где его имеет смысл атаковать, — а не равномерно по всему API, где оно в основном мешает честным клиентам.

API для публикаций — Salohiddin Yo'ldoshev