Skip to content

Instantly share code, notes, and snippets.

@gsamat
Last active December 12, 2019 10:06
Show Gist options
  • Save gsamat/6465c15e4dbd67d3334244f1496ac75b to your computer and use it in GitHub Desktop.
Save gsamat/6465c15e4dbd67d3334244f1496ac75b to your computer and use it in GitHub Desktop.

Вакансия: https://t.me/ctodaily/1063 Для связи: https://t.me/samatg или [email protected]

Если есть код — присылайте лучше код. Если код показать не можете/не хотите — вот задание:

Берём не джанго-фреймворк (eve/falcon/даже aiohttp), делаем один эндпоинт который принимает такой запрос:

POST /api/me
{
    "online": true
}

либо:

POST /api/me
{
    "online": false
}

В ответ эндпоинт должен отдать 200 и сохранить статус пользователя в базе. Cделать запрос может только пользователь с авторизацией - пусть это будет просто токен который хранится в базе и проверяется в заголовке запроса, не мудрите там.

У этого эндпоинта должен быть тротлинг - разрешено не больше 1 запроса в секунду и 30 запросов в минуту и 300 запросов в час. При этом когда в запросе прилетает online = false, то тротлинг для пользователя должен сбрасываться, т.е. например он снова может сделать 300 запросов если истратил свою норму за последний час. Реализовать тротлинг можно как угодно, но держите в голове, что код может запускаться на нескольких серверах и лимиты должны сохраняться даже если пользователь будет ходить на разные сервера.

Должно быть немного тестов, всё должно запускаться через docker-compose up. Можно использовать любые контейнеры и базы, должен быть короткий readme с инструкцией, как запустить, чтобы поняли даже те кто докер никогда не видел.

Есть простор чтобы заморочиться мне кажется 🙃 не старательные не доделают.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment