This media is not supported in your browser
VIEW IN TELEGRAM
Друзья, доброе утро!
Наконец-то дошли руки до завершения проекта телеграм-бота для бронирования столиков в ресторане TableHunter. Встречайте моего нового бота! 🎉
В коротком видео вы можете увидеть, как работает бот: бронирование столика, управление бронями и простая админка.
В этом проекте я использовал много интересных технологий, о которых раньше мало рассказывал. Так что в моей будущей статье вас ждет много полезной информации! 😉
Стек технологий, который я использовал:
* Брокер сообщений: RabbitMQ (это как почтальон, доставляет сообщения от отправителя к получателю, подробнее расскажу в статье).
* Python технологии:
* Aiogram 3
* Aiogram dialog
* FastAPI (да, снова хуки)
* FastStream (это такой Celery современный)
* APScheduler (отложенные и задачи по расписанию)
* SQLAlchemy (работа с базой данных)
И это еще не всё! Будет интересно!
Вот ссылка на исходный код проекта: GITHUB
Ссылка на работающего бота: https://t.me/tableHanterBot
Постараюсь в ближайшие дни выпустить подробную статью на Хабре.
Наконец-то дошли руки до завершения проекта телеграм-бота для бронирования столиков в ресторане TableHunter. Встречайте моего нового бота! 🎉
В коротком видео вы можете увидеть, как работает бот: бронирование столика, управление бронями и простая админка.
В этом проекте я использовал много интересных технологий, о которых раньше мало рассказывал. Так что в моей будущей статье вас ждет много полезной информации! 😉
Стек технологий, который я использовал:
* Брокер сообщений: RabbitMQ (это как почтальон, доставляет сообщения от отправителя к получателю, подробнее расскажу в статье).
* Python технологии:
* Aiogram 3
* Aiogram dialog
* FastAPI (да, снова хуки)
* FastStream (это такой Celery современный)
* APScheduler (отложенные и задачи по расписанию)
* SQLAlchemy (работа с базой данных)
И это еще не всё! Будет интересно!
Вот ссылка на исходный код проекта: GITHUB
Ссылка на работающего бота: https://t.me/tableHanterBot
Постараюсь в ближайшие дни выпустить подробную статью на Хабре.
5🔥69👍21❤6👏2🍾2🎉1
Легкий путь в Python
Друзья, доброе утро! Наконец-то дошли руки до завершения проекта телеграм-бота для бронирования столиков в ресторане TableHunter. Встречайте моего нового бота! 🎉 В коротком видео вы можете увидеть, как работает бот: бронирование столика, управление бронями…
Ссылка на работающего бота: https://t.me/tableHanterBot
👍14🔥9❤3
Друзья, привет! 👋
Решил ещё немного замотивировать вас учить SQLAlchemy 2 одним примером из реальной практики.
📌 Представим, что у нас есть большое количество категорий, и появилась необходимость дополнительно добавить SLUG – латинское представление имени категории для улучшения SEO.
Вот как можно реализовать эту задачу:
💡 В этом процессе мы загружаем полные записи (скаляры) из базы данных, после чего можем работать с каждой строкой таблицы категорий как с полноценным объектом Python. Это позволяет применять к данным любую необходимую логику преобразования, а затем зафиксировать изменения в базе.
🔥 Теперь ваши категории получат красивые и удобные для SEO slug-и! Надеюсь, этот пример был полезен. Делитесь в комментариях, используете ли вы транслитерацию в своих проектах! 🚀
Решил ещё немного замотивировать вас учить SQLAlchemy 2 одним примером из реальной практики.
📌 Представим, что у нас есть большое количество категорий, и появилась необходимость дополнительно добавить SLUG – латинское представление имени категории для улучшения SEO.
Вот как можно реализовать эту задачу:
import asyncio
from transliterate import translit
from app.dao.database import async_session_maker
from app.products.dao import CategoryDAO
import re
async def slugify_category():
async with async_session_maker() as session:
categories = await CategoryDAO(session).find_all()
for category in categories:
# Транслитерация названия категории
transliterated = translit(category.name, 'ru', reversed=True)
# Приведение к нижнему регистру и замена пробелов на дефисы
slug = re.sub(r'[^a-z0-9\-]', '-', transliterated.lower())
slug = re.sub(r'-+', '-', slug).strip('-') # Убираем лишние дефисы
category.slug = slug
await session.commit()
asyncio.run(slugify_category())
💡 В этом процессе мы загружаем полные записи (скаляры) из базы данных, после чего можем работать с каждой строкой таблицы категорий как с полноценным объектом Python. Это позволяет применять к данным любую необходимую логику преобразования, а затем зафиксировать изменения в базе.
🔥 Теперь ваши категории получат красивые и удобные для SEO slug-и! Надеюсь, этот пример был полезен. Делитесь в комментариях, используете ли вы транслитерацию в своих проектах! 🚀
🔥22👍18❤8
Друзья, доброе утро! ☀️
🎉 Обещанная статья про разработку телеграм-бота для бронирования столиков в нашем выдуманном ресторане уже опубликована на Хабре!
📖 Статья называется: «Телеграм-бот для бронирования столов на вебхуках: FastAPI, Aiogram Dialog, FastStream и RabbitMQ в единой экосистеме». В ней я подробно рассматриваю фреймворк Aiogram Dialog в связке с Aiogram 3, а также уделяю много внимания брокеру сообщений RabbitMQ и его практическому применению с FastStream.
💡 Если вы хотите разобраться с темой брокеров сообщений и их использованием, эта статья станет отличным методическим источником!
🔗 Ссылка на статью: Читать на Хабре
🔗 Ссылка на проект на GitHub
🔗 Ссылка на работающего бота: Запустить бота
🙏 Очень надеюсь на вашу обратную связь и поддержку, особенно на Хабре. На разработку этого проекта и написание статьи ушло много времени, и без вашей поддержки у меня просто не будет мотивации создавать подобный контент💬
📖 Статья называется: «Телеграм-бот для бронирования столов на вебхуках: FastAPI, Aiogram Dialog, FastStream и RabbitMQ в единой экосистеме». В ней я подробно рассматриваю фреймворк Aiogram Dialog в связке с Aiogram 3, а также уделяю много внимания брокеру сообщений RabbitMQ и его практическому применению с FastStream.
💡 Если вы хотите разобраться с темой брокеров сообщений и их использованием, эта статья станет отличным методическим источником!
🙏 Очень надеюсь на вашу обратную связь и поддержку, особенно на Хабре. На разработку этого проекта и написание статьи ушло много времени, и без вашей поддержки у меня просто не будет мотивации создавать подобный контент
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Телеграм-бот для бронирования столов на вебхуках: FastAPI, Aiogram Dialog, FastStream и RabbitMQ в единой экосистеме
Друзья, приветствую. На Хабре я уже описал достаточно много материала, но гештальт с Aiogram dialog и взаимодействие с брокером сообщений RabbitMQ так и не закрыл. Сегодня хочу исправить это. В рамках...
5👍44🔥25❤12🎉2👏1
Привет всем👋
Я к вам с анонсом нового проекта для большой статьи под Хабр!
Давно я хотел реализовать телеграмм бота с MiniApp, где можно будет создать чат со случайным пользователем. Вы помните старый чат «Тет-А-Тет»? Вот примерно то же самое, но уже в формате телеграмм бота с MiniApp.
Суть проекта:
- Фильтры и соединение: Вводите фильтры и нажимаете кнопку.
- Случайное общение: Вас соединяют со случайным пользователем для общения.
- Гибкость: Каждый пользователь может прервать общение и открыть новый рандомайзер.
Таким образом, получится своего рода мессенджер внутри мессенджера, использующий современные технологии: вебсокеты, вебхуки, реактивность и MiniApp.
Стек технологий:
- Фронтенд: VueJS
- Бэкенд: FastAPI + Aiogram 3
Кроме того, бонусом, я планирую показать простой способ монетизации MiniApp приложений.
Будете ждать статью?
Я к вам с анонсом нового проекта для большой статьи под Хабр!
Давно я хотел реализовать телеграмм бота с MiniApp, где можно будет создать чат со случайным пользователем. Вы помните старый чат «Тет-А-Тет»? Вот примерно то же самое, но уже в формате телеграмм бота с MiniApp.
Суть проекта:
- Фильтры и соединение: Вводите фильтры и нажимаете кнопку.
- Случайное общение: Вас соединяют со случайным пользователем для общения.
- Гибкость: Каждый пользователь может прервать общение и открыть новый рандомайзер.
Таким образом, получится своего рода мессенджер внутри мессенджера, использующий современные технологии: вебсокеты, вебхуки, реактивность и MiniApp.
Стек технологий:
- Фронтенд: VueJS
- Бэкенд: FastAPI + Aiogram 3
Кроме того, бонусом, я планирую показать простой способ монетизации MiniApp приложений.
Будете ждать статью?
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍103🔥30❤20
32 года: Время для размышлений и благодарности 🤍
Сегодня мне исполнилось 32 года🍰 Сижу и думаю о том, как далеко я зашел. Когда-то я просто писал код для себя, а теперь веду блог на Хабре и канал, где уже почти 2700 человек. Это как маленькая армия разработчиков, с которыми мы вместе изучаем Python и все, что с ним связано 🐍
Путь от джуна до эксперта
32 года — это вроде бы еще молодость, но уже не вчерашний джун😄 За эти годы я осознал одну простую истину: делиться знаниями — это действительно круто. Это как лайфхак для получения быстрого буста в технологиях, о которых пишешь. Пишешь код, он работает — слава Богу! Но с ростом аудитории приходит и ответственность. И за это я хочу сказать огромное спасибо вам, друзья!
Благодарность за поддержку
Спасибо за вашу поддержку, за то, что верите в меня и позволяете мне быть собой. Каждый ваш комментарий, лайк или даже спор под статьей мотивирует двигаться дальше и развиваться.
Что впереди?
📌 Что дальше? Да кто его знает! Наверное, нас ждут еще больше статей, новых идей и экспериментов. Если у вас есть темы, которые вы хотите разобрать — пишите! А пока я отмечаю свой день рождения с мыслями о том, что все только начинается.
Спасибо всем вам за то, что читаете меня и поддерживаете. Вы — настоящая огненная команда🔥
Сегодня мне исполнилось 32 года
Путь от джуна до эксперта
32 года — это вроде бы еще молодость, но уже не вчерашний джун😄 За эти годы я осознал одну простую истину: делиться знаниями — это действительно круто. Это как лайфхак для получения быстрого буста в технологиях, о которых пишешь. Пишешь код, он работает — слава Богу! Но с ростом аудитории приходит и ответственность. И за это я хочу сказать огромное спасибо вам, друзья!
Благодарность за поддержку
Спасибо за вашу поддержку, за то, что верите в меня и позволяете мне быть собой. Каждый ваш комментарий, лайк или даже спор под статьей мотивирует двигаться дальше и развиваться.
Что впереди?
📌 Что дальше? Да кто его знает! Наверное, нас ждут еще больше статей, новых идей и экспериментов. Если у вас есть темы, которые вы хотите разобрать — пишите! А пока я отмечаю свой день рождения с мыслями о том, что все только начинается.
Спасибо всем вам за то, что читаете меня и поддерживаете. Вы — настоящая огненная команда
Please open Telegram to view this post
VIEW IN TELEGRAM
20❤111🍾46🎉43🔥18👍4🙏2
🚀 Потихоньку двигаюсь дальше с разработкой чата со случайными пользователями на базе Telegram Mini App
Решил подробнее рассказать о технологиях и функционале будущего бота.
🔹 Технологический стек:
— FastAPI + WebSockets для мгновенного обмена сообщениями
— Redis в роли очереди для матчмейкинга
— PostgreSQL для хранения истории чатов и данных пользователей
— Vue 3 + Pinia для удобного управления состоянием на фронте
— Telegram Web Apps API для интеграции с Telegram MiniApps
Как видите, стек мощный — будет интересно! 😎
💰 Монетизация
Напоминаю, что в недавнем анонсе я останавливался на теме монетизации в проекте. Одним из наиболее логичных способов монетизации MiniApp является реклама. Это позволяет оставить сервис бесплатным для пользователей, а разработчику получать доход с популярности проекта.
В качестве рекламной платформы рассматриваю RichAds — у них есть отличные инструменты для интеграции рекламы в Telegram MiniApps. Сервис удобен как для размещения рекламы других проектов, так и для монетизации собственного контента. В статье подробно разберу этот процесс на практике.
Следите за обновлениями, скоро будет больше деталей! 🔥
Решил подробнее рассказать о технологиях и функционале будущего бота.
🔹 Технологический стек:
— FastAPI + WebSockets для мгновенного обмена сообщениями
— Redis в роли очереди для матчмейкинга
— PostgreSQL для хранения истории чатов и данных пользователей
— Vue 3 + Pinia для удобного управления состоянием на фронте
— Telegram Web Apps API для интеграции с Telegram MiniApps
Как видите, стек мощный — будет интересно! 😎
💰 Монетизация
Напоминаю, что в недавнем анонсе я останавливался на теме монетизации в проекте. Одним из наиболее логичных способов монетизации MiniApp является реклама. Это позволяет оставить сервис бесплатным для пользователей, а разработчику получать доход с популярности проекта.
В качестве рекламной платформы рассматриваю RichAds — у них есть отличные инструменты для интеграции рекламы в Telegram MiniApps. Сервис удобен как для размещения рекламы других проектов, так и для монетизации собственного контента. В статье подробно разберу этот процесс на практике.
Следите за обновлениями, скоро будет больше деталей! 🔥
Richads
RichAds - Performance marketing advertising network
Global High-Quality Pop TrafficAd Network
🔥32👍15❤7😍2
Как Docker помог масштабировать обновление остатков и цен 📚💻
Продолжаю делиться интересными кейсами из своего боевого опыта кодинга😅 Если коротко, есть один проект - он обслуживает почти 1 млн книг с таких площадок, как Читай Город, Озон, Лабиринт, WB.
Процесс работает в двух направлениях:
🔹 Сбор информации — парсинг, актуализация остатков и цен.
🔹 Обслуживание магазинов клиентов — управление их товарами на Озоне и Wildberries.
🔥 Проблема
Когда у тебя 70+ работающих магазинов, задача обновления цен и остатков становится непростой. Вкратце, процесс такой:
1️⃣ Берем товары из магазина клиента.
2️⃣ Запрашиваем актуальные данные через сайт-донора.
3️⃣ Обновляем остатки и цены в магазине.
Скрипт простой, но при таком масштабе нужно решение, которое обеспечит скорость и стабильность.
🚀 Решение — Docker
Я создал универсальный Docker-образ, который принимает параметры конкретного магазина и запускает процесс обновления. Далее просто поднял 70 контейнеров — каждому магазину свой изолированный контейнер и прокси-сервер.
📦 Что это дало?
✅ Независимость магазинов друг от друга.
✅ Минимальные накладные расходы на управление.
✅ Гибкость и легкость в масштабировании.
В итоге процесс стал быстрее и стабильнее, без риска завалить всю систему.
Docker — 🔥 инструмент, если его правильно использовать. Особенно, когда дело касается масштабирования задач. 😉
Продолжаю делиться интересными кейсами из своего боевого опыта кодинга😅 Если коротко, есть один проект - он обслуживает почти 1 млн книг с таких площадок, как Читай Город, Озон, Лабиринт, WB.
Процесс работает в двух направлениях:
🔹 Сбор информации — парсинг, актуализация остатков и цен.
🔹 Обслуживание магазинов клиентов — управление их товарами на Озоне и Wildberries.
🔥 Проблема
Когда у тебя 70+ работающих магазинов, задача обновления цен и остатков становится непростой. Вкратце, процесс такой:
1️⃣ Берем товары из магазина клиента.
2️⃣ Запрашиваем актуальные данные через сайт-донора.
3️⃣ Обновляем остатки и цены в магазине.
Скрипт простой, но при таком масштабе нужно решение, которое обеспечит скорость и стабильность.
🚀 Решение — Docker
Я создал универсальный Docker-образ, который принимает параметры конкретного магазина и запускает процесс обновления. Далее просто поднял 70 контейнеров — каждому магазину свой изолированный контейнер и прокси-сервер.
📦 Что это дало?
✅ Независимость магазинов друг от друга.
✅ Минимальные накладные расходы на управление.
✅ Гибкость и легкость в масштабировании.
В итоге процесс стал быстрее и стабильнее, без риска завалить всю систему.
Docker — 🔥 инструмент, если его правильно использовать. Особенно, когда дело касается масштабирования задач. 😉
🔥32👍19❤6
Друзья, добрый вечер!
Сегодня я хочу поделиться с вами незапланированным контентом. Утром мне пришла в голову идея написать короткий пост о том, как работают вебсокеты в FastAPI. Однако, по мере работы, материал разросся до полноценного проекта!
Посмотрев на результат, я понял, что он заслуживает отдельного упоминания в статье на Хабре. После небольших доработок я решил записать видео, чтобы поделиться с вами этим проектом.
Итак, представляю вам небольшой учебный проект, который поможет вам понять, как работают вебсокеты в формате FullStack приложения. Я намеренно сделал его простым, избегая сложностей с базами данных и избыточной валидацией. Рассматривайте его как дополнительный методический материал к большой статье на Хабре о телеграм-боте с MiniApp и анонимным чатом «Тет-а-Тет».
На данный момент я уже:
1. Подготовил код для проекта.
2. Задеплоил его.
3. Записал видео по проекту.
4. Подготовил черновик статьи для Хабра. Если все пройдет по плану, завтра я поделюсь с вами этой статьей.
Вот ссылки на материалы:
- Видео на YouTube: [Смотреть здесь]
- Видео на RuTube: [Смотреть здесь]
- Проект на GitHub: [Посмотреть код]
- Работающий чат: [Попробовать чат]
Напоминаю, что это только подготовительный методический материал к большому проекту. Надеюсь, он будет полезен вам!
Сегодня я хочу поделиться с вами незапланированным контентом. Утром мне пришла в голову идея написать короткий пост о том, как работают вебсокеты в FastAPI. Однако, по мере работы, материал разросся до полноценного проекта!
Посмотрев на результат, я понял, что он заслуживает отдельного упоминания в статье на Хабре. После небольших доработок я решил записать видео, чтобы поделиться с вами этим проектом.
Итак, представляю вам небольшой учебный проект, который поможет вам понять, как работают вебсокеты в формате FullStack приложения. Я намеренно сделал его простым, избегая сложностей с базами данных и избыточной валидацией. Рассматривайте его как дополнительный методический материал к большой статье на Хабре о телеграм-боте с MiniApp и анонимным чатом «Тет-а-Тет».
На данный момент я уже:
1. Подготовил код для проекта.
2. Задеплоил его.
3. Записал видео по проекту.
4. Подготовил черновик статьи для Хабра. Если все пройдет по плану, завтра я поделюсь с вами этой статьей.
Вот ссылки на материалы:
- Видео на YouTube: [Смотреть здесь]
- Видео на RuTube: [Смотреть здесь]
- Проект на GitHub: [Посмотреть код]
- Работающий чат: [Попробовать чат]
Напоминаю, что это только подготовительный методический материал к большому проекту. Надеюсь, он будет полезен вам!
YouTube
Вебсокеты на FastAPI: Реализация простого чата с комнатами за 20 минут
В этом видео мы разберемся, что такое вебсокеты и как они работают, используя FastAPI для создания простого чата с комнатами.
Вы узнаете, как настроить сервер, реализовать функционал общения в реальном времени и организовать комнаты для пользователей.
Этот…
Вы узнаете, как настроить сервер, реализовать функционал общения в реальном времени и организовать комнаты для пользователей.
Этот…
2🔥49👍19❤10💘1
🚀 Новый гайд: Вебсокеты + FastAPI – создаем чат с комнатами!
Друзья, привет! 👋
На Хабре вышла моя новая статья, в которой я подробно и доступно объясняю, как работают вебсокеты в связке с FastAPI. Мы разберем не только теорию, но и применим знания на практике, реализовав полноценный чат с поддержкой комнат и возможностью подключать неограниченное число пользователей.
🔹 Кому будет полезно?
Материал отлично подойдет новичкам, но и опытные разработчики смогут найти для себя полезные инсайты.
🔹 Что используем?
✅ FastAPI + WebSockets – для серверной части и работы в реальном времени
✅ JavaScript – для установления соединений и динамики на странице
✅ TailwindCSS – для быстрой и удобной стилизации
✅ HTML + Jinja2 – для рендеринга страниц
💡 Бонус: Этот гайд — подготовка к большой статье о создании Telegram-бота с MiniApp и анонимным чатом «Тет-а-Тет»!
📖 Читать статью: "Вебсокеты на FastAPI: Реализация простого чата с комнатами за 20 минут"
🎥 Видео разбор: YouTube | RuTube
💻 Код проекта: GitHub
🔥 Попробовать чат в деле: ЧАТ
Буду рад вашей поддержке, комментариям и обратной связи! 🚀
Друзья, привет! 👋
На Хабре вышла моя новая статья, в которой я подробно и доступно объясняю, как работают вебсокеты в связке с FastAPI. Мы разберем не только теорию, но и применим знания на практике, реализовав полноценный чат с поддержкой комнат и возможностью подключать неограниченное число пользователей.
🔹 Кому будет полезно?
Материал отлично подойдет новичкам, но и опытные разработчики смогут найти для себя полезные инсайты.
🔹 Что используем?
✅ FastAPI + WebSockets – для серверной части и работы в реальном времени
✅ JavaScript – для установления соединений и динамики на странице
✅ TailwindCSS – для быстрой и удобной стилизации
✅ HTML + Jinja2 – для рендеринга страниц
💡 Бонус: Этот гайд — подготовка к большой статье о создании Telegram-бота с MiniApp и анонимным чатом «Тет-а-Тет»!
📖 Читать статью: "Вебсокеты на FastAPI: Реализация простого чата с комнатами за 20 минут"
🎥 Видео разбор: YouTube | RuTube
💻 Код проекта: GitHub
🔥 Попробовать чат в деле: ЧАТ
Буду рад вашей поддержке, комментариям и обратной связи! 🚀
Хабр
Вебсокеты на FastAPI: Реализация простого чата с комнатами за 20 минут
В ближайшее время я планирую опубликовать большую статью на Хабре, где подробно разберу разработку анонимного чата в формате Telegram MiniApp. Мы создадим сервис для общения тет-а-тет, который будет...
2🔥45❤11👍8⚡2
Друзья, привет! 🌟
Решил рассказать о том, как кэширование с использованием Redis может значительно ускорить ваши FastAPI приложения.
Представьте, что у вас есть метод, который возвращает многоуровневую структуру каталога для интернет-магазина. Формирование ответа занимает целых 3 секунды — это слишком долго! Решение простое: кэширование!
Как работает кэширование с Redis в FastAPI:
1. Первый запрос:
- Проверяем наличие данных в Redis по определенному ключу.
- Если данных нет, выполняем тяжелый запрос к базе данных.
- Сохраняем результат в Redis с временем жизни (TTL) 1 час.
- Возвращаем данные пользователю.
То есть. Тот кто первый выполнит запрос, тот и возьмет на себя всю нагрузку.
2. Следующие запросы в течение часа:
- Снова проверяем Redis.
- Если данные есть, возвращаем их без обращения к БД.
- Через час Redis автоматически удаляет старые данные.
Шаги для реализации:
1. Запуск Redis:
Используйте Docker для запуска контейнера Redis:
2. Установка библиотек:
Установите необходимые зависимости:
Пример кода:
Опишите жизненный цикл вашего FastAPI приложения и включите Redis с кэшированием:
С помощью этого подхода вы сможете значительно ускорить работу вашего приложения, минимизируя время отклика и нагрузку на базу данных.
Если у вас есть вопросы или хотите обсудить детали реализации — пишите в комментариях! 🚀
Решил рассказать о том, как кэширование с использованием Redis может значительно ускорить ваши FastAPI приложения.
Представьте, что у вас есть метод, который возвращает многоуровневую структуру каталога для интернет-магазина. Формирование ответа занимает целых 3 секунды — это слишком долго! Решение простое: кэширование!
Как работает кэширование с Redis в FastAPI:
1. Первый запрос:
- Проверяем наличие данных в Redis по определенному ключу.
- Если данных нет, выполняем тяжелый запрос к базе данных.
- Сохраняем результат в Redis с временем жизни (TTL) 1 час.
- Возвращаем данные пользователю.
То есть. Тот кто первый выполнит запрос, тот и возьмет на себя всю нагрузку.
2. Следующие запросы в течение часа:
- Снова проверяем Redis.
- Если данные есть, возвращаем их без обращения к БД.
- Через час Redis автоматически удаляет старые данные.
Шаги для реализации:
1. Запуск Redis:
Используйте Docker для запуска контейнера Redis:
docker run -d --name redis_container -p 6379:6379 -v redis_data:/data redis:latest
2. Установка библиотек:
Установите необходимые зависимости:
redis==5.2.1
fastapi-cache2==0.2.2
uvicorn==0.31.0
fastapi==0.115.0
aioredis==2.0.1
Пример кода:
Опишите жизненный цикл вашего FastAPI приложения и включите Redis с кэшированием:
from fastapi import FastAPI, Depends
from fastapi_cache import FastAPICache
from fastapi_cache.backends.redis import RedisBackend
import aioredis
from contextlib import asynccontextmanager
from fastapi_cache.decorator import cache
@asynccontextmanager
async def lifespan(app: FastAPI):
redis = await aioredis.from_url("redis://localhost", encoding="utf8", decode_responses=True)
FastAPICache.init(RedisBackend(redis), prefix="api:cache")
yield
app = FastAPI(lifespan=lifespan)
@app.get('/tree')
@cache(expire=3600)
async def get_category_tree(session: AsyncSession = Depends(get_session_without_commit)):
return await CategoryDAO(session).find_category_tree()
С помощью этого подхода вы сможете значительно ускорить работу вашего приложения, минимизируя время отклика и нагрузку на базу данных.
Если у вас есть вопросы или хотите обсудить детали реализации — пишите в комментариях! 🚀
🔥31👍19❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Доброй ночи, друзья!
Снова у меня вышла история как пару дней назад — хотел написать небольшой пост, а получился полноценный проект с исходным кодом и живой демонстрацией!
Вчера я спрашивал, интересно ли вам узнать о Centrifugo. Этой теме я и планировал посвятить небольшой материал, но всё вышло масштабнее.
Что в итоге получилось? Real-time опросник с интересной механикой:
1. Заходите на страницу с вопросами
2. Выбираете интересующий вопрос
3. Отвечаете одним из вариантов
4. Попадаете на страницу с результатами
И вот здесь начинается магия — изначально страница загружается с актуальными данными из базы, но если немного подождать, вы увидите как статистика обновляется в реальном времени без перезагрузки страницы. Именно тут на сцену выходит Centrifugo!
Подробный разбор технологии я подготовлю для статьи на Хабре, а пока делюсь с вами:
- Исходным кодом: GitHub
- Рабочей демкой: ДЕМО ПРОЕКТА
Будете ждать полноценную статью? Дайте знать в комментариях!
Снова у меня вышла история как пару дней назад — хотел написать небольшой пост, а получился полноценный проект с исходным кодом и живой демонстрацией!
Вчера я спрашивал, интересно ли вам узнать о Centrifugo. Этой теме я и планировал посвятить небольшой материал, но всё вышло масштабнее.
Что в итоге получилось? Real-time опросник с интересной механикой:
1. Заходите на страницу с вопросами
2. Выбираете интересующий вопрос
3. Отвечаете одним из вариантов
4. Попадаете на страницу с результатами
И вот здесь начинается магия — изначально страница загружается с актуальными данными из базы, но если немного подождать, вы увидите как статистика обновляется в реальном времени без перезагрузки страницы. Именно тут на сцену выходит Centrifugo!
Подробный разбор технологии я подготовлю для статьи на Хабре, а пока делюсь с вами:
- Исходным кодом: GitHub
- Рабочей демкой: ДЕМО ПРОЕКТА
Будете ждать полноценную статью? Дайте знать в комментариях!
1🔥62👍19❤7❤🔥3
Доброе утро, друзья! ☀️
Статья «Centrifugo v6 + FastAPI + Python: разрабатываем веб-опросник с обновлениями в реальном времени» уже опубликована на Хабре! 🎉
🔗 Читать статью: https://habr.com/ru/companies/amvera/articles/885714/
В статье я рассказываю, как с помощью Centrifugo можно организовать real-time обновления в веб-приложениях. На практике мы разрабатываем интерактивный опросник, в котором статистика ответов обновляется моментально, без перезагрузки страницы.
🔹 Технический стек:
- Centrifugo – отвечает за real-time обновления
- FastAPI – веб-сервер
- SQLite + SQLAlchemy – база данных и ORM
- Tailwind CSS – для стилизации
🔥 Попробовать проект вживую:
- Исходный код: GitHub
- Рабочая демка: ДЕМО ПРОЕКТА
Буду рад вашим комментариям! Как вам такой подход к real-time? 🚀
Статья «Centrifugo v6 + FastAPI + Python: разрабатываем веб-опросник с обновлениями в реальном времени» уже опубликована на Хабре! 🎉
🔗 Читать статью: https://habr.com/ru/companies/amvera/articles/885714/
В статье я рассказываю, как с помощью Centrifugo можно организовать real-time обновления в веб-приложениях. На практике мы разрабатываем интерактивный опросник, в котором статистика ответов обновляется моментально, без перезагрузки страницы.
🔹 Технический стек:
- Centrifugo – отвечает за real-time обновления
- FastAPI – веб-сервер
- SQLite + SQLAlchemy – база данных и ORM
- Tailwind CSS – для стилизации
🔥 Попробовать проект вживую:
- Исходный код: GitHub
- Рабочая демка: ДЕМО ПРОЕКТА
Буду рад вашим комментариям! Как вам такой подход к real-time? 🚀
Хабр
Centrifugo v6 + FastAPI + Python: разрабатываем веб-опросник с обновлениями в реальном времени
Друзья, приветствую! Если вы следите за моими публикациями на Хабре, то знаете, что прошлую свою статью я посвятил теме разработки мини-чата с комнатами. Там я использовал такую технологию, как...
🔥30👍16❤12🙏1
Приветствую, друзья. Дошли руки до проекта чата ТетАТет на скринах выше примерный дизайн будущего Telegram MiniApp приложения. Уже все сверстал. Осталось подключить бэкенд
3🔥40👍13❤4👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Друзья, добрый вечер!
Проект чата Тет@Тет на завершающей стадии тестирования и деплоя. Завтра, если найду свободное время, презентую полный исходный код проекта (бэкенд на FastApi + Aiogram 3 и фронтенд на VueJS3) и ссылку на бота.
На представленном видео демонстрация работы бота со стороны фронтенда:
1) Пользователь кликает на «Старт» и отвечает на пару вопросов, называя свой пол, возраст и придумывает никнейм для анонимного чата
2) После входа есть возможность: почитать «о нас», просмотреть профиль, изменить данные в профиле и зайти в MiniApp.
MiniApp – это форма с подбором для фильтрации и сама страница чата. На представленном видео демонстрация общения между двумя аккаунтами.
Стек технологий:
- Redis
- Centrifugo
- SQLite
- FastApi
- Aiogram 3
- SQLAlchemy и прочие технологии бэкенда
- VueJS3 и прочие технологии фронтенда
Как вы видите проект получился мощный, так что буду ждать вашей поддержки.
Проект чата Тет@Тет на завершающей стадии тестирования и деплоя. Завтра, если найду свободное время, презентую полный исходный код проекта (бэкенд на FastApi + Aiogram 3 и фронтенд на VueJS3) и ссылку на бота.
На представленном видео демонстрация работы бота со стороны фронтенда:
1) Пользователь кликает на «Старт» и отвечает на пару вопросов, называя свой пол, возраст и придумывает никнейм для анонимного чата
2) После входа есть возможность: почитать «о нас», просмотреть профиль, изменить данные в профиле и зайти в MiniApp.
MiniApp – это форма с подбором для фильтрации и сама страница чата. На представленном видео демонстрация общения между двумя аккаунтами.
Стек технологий:
- Redis
- Centrifugo
- SQLite
- FastApi
- Aiogram 3
- SQLAlchemy и прочие технологии бэкенда
- VueJS3 и прочие технологии фронтенда
Как вы видите проект получился мощный, так что буду ждать вашей поддержки.
🔥63👍21❤6👏3