Григорий IT://home
Open in Telegram
Блог препода и Backend‑разработчика - личный опыт, советы и интересное из моих занятий и проектов Автор: @ad_astraa1
Show more300
Subscribers
No data24 hours
-17 days
-430 days
Posts Archive
Repost from INNOPROG — здесь об IT
⚡️Aiohttp: ускоряем работу с API в Python
Представь ситуацию: ты разрабатываешь бэкенд веб-платформу, которой необходимо регулярно делать по 10 запросов в 10 разных API
- При обычном использовании
requests мы отправляем первый запрос, ждём ответа, потом второй, потом третий и так далее...
- А можно сделать так: пока один API обрабатывает наш запрос, программа может переключиться на работу с другими запросами
Вот для таких задач и существует aiohttp
aiohttp - это библиотека для асинхронной работы с HTTP в Python, с её помощью можно как отправлять HTTP-запросы, так и поднимать свой web-серверГлавная фишка тут именно в асинхронности Допустим, у нас есть несколько адресов:
import asyncio
import aiohttp
async def get_site(session, url):
async with session.get(url) as response:
print(url, response.status)
async def main():
urls = [
"https://python.org",
"https://github.com",
"https://google.com"
]
async with aiohttp.ClientSession() as session:
await asyncio.gather(
*[get_site(session, url) for url in urls]
)
asyncio.run(main())
Что здесь происходит? 👇
1. Мы создаём одну клиентскую сессию (ClientSession)
2. Делаем сразу несколько запросов через asyncio.gather() - функцию, которая запускает несколько асинхронных операций вместе и ждёт, пока они завершатся
3. И не ждём, пока каждый запрос полностью закончится перед запуском следующего
4. Пока мы ждём ответ от одного сайта, Python может переключиться на обработку другого запроса
В этих задачах aiohttp будет особенно полезен:
- работа с большим количеством API
- парсеры и сбор данных
- микросервисы
- Telegram-боты
- любые задачи, где программа много ждёт сеть
Чем это лучше обычной библиотеки requests?
1. Если нужно сделать один-два запроса, то requests может подойти:
requests.get(url)
2. Но если запросов сотни, код на requests много времени просто ждёт ответа от API, а с aiohttp это время ожидания можно использовать для выполнения других запросов
Важно: aiohttp не делает сам HTTP-запрос быстрее, выигрыш появляется за счёт того, что во время ожидания выполнения одного запроса программа может заниматься другимиПодводя итог, можно сказать следующее:
requests - простая и удобная библиотека для обычных запросов и небольших скриптов
aiohttp - библиотека помощнее, которая нужна в ситуациях, когда начинается серьёзная асинхронная работа с сетью
А какие асинхронные библиотеки вы использовали в своих проектах?Repost from INNOPROG — здесь об IT
Сериализаторы простыми словами
Слово страшное (много букв ааа), но если совсем по-простому его пояснять, то сериализатор - это переводчик между Python-объектами и данными, которые уходят или приходят через API
Зачем он нужен?
Представь, что ты разрабатываешь web-сервис и у тебя есть некая переменная-словарь в Python-коде:
user = {
"id": 1,
"name": "Алексей"
}
И перед нами стоит задача: нужно отправить эту информацию на смартфон пользователя через API
Но есть загвоздка - приложение на смартфоне пользователя не понимает Python-структуры (в т.ч. переменные), как тогда быть...🤷♂️
Ответ прост - превратить данные в текст формата JSON
И тогда пользователь получит на своё устройство что-то вроде такого текста:
{
"id": 1,
"name": "Алексей"
}
И уже с текстом ему будет проще справиться, чем с какими-то там python-объектами и python-переменными
Вот это превращение Python-объекта в JSON и называется сериализацией
Работает это и в обратную сторону:
Например, когда пользователь заполняет форму регистрации и нажимает кнопку "Отправить", мы по сути шлём на сервер данные в виде JSON-текста:
{
"name": "Алексей",
"email": "Aleksey@mail.com"
}
Но важный момент - перед тем как сохранить эти данные в базу данных на сервере, нужно как минимум проверить - все ли поля в форме заполнены и корректный ли тип у данных (не написал ли пользователь слово "Привет" в окне для ввода возраста)
А если вместо возраста пришло слово "Привет", сериализатор сразу скажет: стоп, тут ошибка, возраст должен быть числом
Например, с помощью библиотеки Pydantic можно описывать структуру данных и превращать объект в словарь/JSON:
from pydantic import BaseModel
class UserRegister(BaseModel):
name: str
age: int
data = {
"name": "Алексей",
"age": 25
}
user = UserRegister(**data)
print(user.model_dump())
print(user.model_dump_json())
☝️Тут мы описываем, какие поля ожидаем, и какого они должны быть типа.
Таким образом, сериализатор обычно делает две вещи:
1. Готовит данные для отправки из сервера клиенту
2. Проверяет данные, которые пришли от клиента на сервер
Поэтому в backend они используются почти в каждом запросе к APIRepost from INNOPROG — здесь об IT
👨💻 FastAPI vs Django vs Flask - какая разница? Разбираемся вместе с Григорием, преподавателем INNOPROG
Те, кто только делают первые шаги в backend-разработке, часто спрашивают: какой фреймворк лучше выбрать - FastAPI, Django или Flask?
И какая между ними вообще разница?
Если объяснять по-простому:
Django - это фреймворк, в котором вы найдёте много готового: админку, авторизацию, ORM, структуру проекта и другие инструменты для полноценного веб-сервиса
Flask - это минималистичный фреймворк, который даёт базу, а дальше вы сами решаете, что подключать и как собирать проект
FastAPI - это современный фреймворк на Python, изначально ориентированный на создание API и удобный для backend-сервисов, которые принимают запросы и отдают данные frontend, мобильным приложениям, ботам или другим сервисам
Как обычно выбирают между ними?
- Если нужен большой сайт или сервис с кучей готовых вещей - чаще смотрят в сторону Django
- Если хочется больше свободы и минимализма - берут Flask
- Если нужен удобный и быстрый API на Python с валидацией данных и Swagger-документацией, обычно выбирают FastAPI
То есть, если совсем кратко:
- Django = много готового
- Flask = много свободы
- FastAPI = удобно делать API
❗️Что выбрать новичку?
- Если хочешь базово понять, как работают веб-сервисы, можно зайти через Flask
- Если хочешь делать что-то ближе к реальному сервису, смотри на FastAPI
- Если нужен полноценный веб-проект с кучей готовой инфраструктуры, хорошим вариантом будет Django
Но важно помнить: лучшего фреймворка вообще не существует
Есть фреймворк, который лучше подходит под конкретную задачу!
А с какого из них начинали вы? Пишите в комментариях к посту 👇
Repost from INNOPROG — здесь об IT
👨💻 FastAPI vs Django vs Flask - какая разница? Разбираемся вместе с Григорием, преподавателем INNOPROG
Те, кто только делает первые шаги в backend-разработке, часто спрашивают: какой фреймворк лучше выбрать - FastAPI, Django или Flask?
И какая между ними вообще разница?
Если объяснять по-простому:
Django - это инструмент, в котором вы найдёте много всего готового: админка, авторизация, ORM, структура проекта и т.д.
Flask - это конструктор, который даёт тебе базу, а дальше ты сам решаешь, что подключать и как всё собирать
FastAPI - это современный инструмент под API, особенно хорошо подходит, когда ты делаешь backend для бота, frontend, мобильного приложения или микросервиса
Как обычно выбирают между ними?
- Если нужен большой сайт или сервис с кучей готовых вещей - чаще смотрят в сторону Django
- Если хочется больше свободы и минимализма - берут Flask
- Если нужен удобный и быстрый API на Python с валидацией данных и Swagger-документацией, обычно выбирают FastAPI
То есть, если совсем кратко:
- Django = много готового
- Flask = много свободы
- FastAPI = удобно делать API
❗️Что выбрать новичку?
- Если хочешь базово понять, как работают веб-сервисы, можно зайти через Flask
- Если хочешь делать что-то ближе к реальному сервису, смотри на FastAPI
- Если нужен полноценный веб-проект с кучей готовой инфраструктуры, хорошим вариантом будет Django
Но важно помнить: лучшего фреймворка вообще не существует
Есть фреймворк, который лучше подходит под конкретную задачу!
А с какого из них начинали вы? Пишите в комментариях к посту 👇
Недавно ко мне обратился заказчик, нужно было реализовать фичу общих корзин для небольшого сервиса доставки
❓Смысл такой:
1. один пользователь создаёт общую корзину
2. получает ссылку или QR
3. скидывает друзьям
4. каждый заходит и добавляет свои позиции
5. а потом создатель оформляет и оплачивает весь заказ
Отдельно сделал фиксацию оплаты: создатель видит, кто сколько должен перевести, участники могут отметить перевод, а создатель - подтвердить
🔒После старта оплаты корзина блокируется, чтобы никто уже не менял состав заказа
На скрине выше пока черновой интерфейс, но сама backend-логика уже работает
#projects
+3
🐍Универсальность Python подкрепляется широким выбором фреймворков для разных задач
#python
💡Друзья, проголосуйте пожалуйста за темы, которые вам было бы интересно изучить, реазизация планируется на фреймворках FastAPI/Django
Маскотом бота стал кот моих родителей Локи😁
Можете проверять, маскот уже добавлен😊
@grigo_it_English_bot
#pet
💻Для тех кто на сервере: мини-шпаргалка по HTTP-статусам
📌Сохрани, пригодится
#tips
🇬🇧Ну чтож, спустя столько времени у меня наконец добрались руки до бота для изучения английских слов, о котором я писал аж в декабре
Возможности бота:
⏺️Интервальное повторение изучаемых слов
⏺️Ежедневные напоминания
⏺️Викторина по изучаемым словам
⏺️Отлеживание прогресса друзей
Проект в данный момент работает корректно, поправил множество багов, вы можете его протестировать тут 👉 @grigo_it_English_bot
💬Пишите в лс или тут в комментах, если возникнут проблемы при работе
——————
⚡️Также в ближайшее время планирую создать животного-маскота для данного бота (как Дуо у Дуолинга, да-да), предлагайте своих животных в комментариях 👇
#pet
💻Уже некоторое время участвую в командной разработке одного небольшого стартап-проекта как backend-разработчик
На прошлой неделе плотно занимался серверной частью: доработал REST API, описал основные сценарии работы сервиса и подготовил для команды Swagger-документацию👩💻
Проект пишу на Django + DRF 🔨, в ближайшее время планируется интеграция с мобилкой на Flutter👩💻
⏺️Как думаете, из какой сферы проект?
#pet
🐱Друзья, в свете слухов об очередной мишени для блокировок предлагаю небольшой интерактив - обмен GitHub-аккаунтами
⏺️Делитесь вашими аккаунтами в комментариях, бонусом можете кратко описать пару интересных проектов🤖
📌Мой аккаунт: github.com/grigoscope
#git #github
Repost from INNOPROG — здесь об IT
Python 3.15 выглядит довольно интересно
- И не потому, что там появилась одна огромная фича, после которой срочно надо всё бросить и переписывать проект
- Скорее наоборот: релиз выглядит как набор небольших, но полезных улучшений, которые могут сделать повседневную разработку приятнее
5 улучшений, на которые стоит отметить:
1. Lazy imports
- Импорты можно будет делать ленивыми - то есть модуль загрузится только тогда, когда реально понадобится в работе кода
- Это особенно полезно для приложений, где важна скорость старта.
2. frozendict
- В Python появляется встроенный неизменяемый словарь
- По смыслу похож на обычный dict, но после создания его уже нельзя менять
-Плюс он может быть хешируемым
3. Новые инструменты профилирования
- В Python добавляют отдельный пакет для профилирования, в том числе statistical sampling profiler
- Проще говоря, можно будет с меньшей нагрузкой на саму программу отслеживать - где код работает слишком долго и искать узкие места
4. Улучшения JIT
JIT (Just-In-Time, «точно в срок») - это технология, используемая в программировании для ускорения работы программ путем компиляции байт-кода в машинный код непосредственно во время выполнения, а не до запуска- JIT в CPython всё ещё экспериментальный, но для версии 3.15 работают над его улучшением - Улучшают трассировку, генерацию машинного кода и оптимизации - Это не значит, что Python внезапно стал по скорости сопоставим с C++, но направление для развития само по себе интересное 5. Более понятные ошибки - Python продолжает улучшать сообщения об ошибках - И это реально важно - хорошее сообщение об ошибке экономит кучу времени, особенно когда ты просто опечатался в названии метода В целом Python 3.15 выглядит довольно практично: - Не каждая фича будет нужна каждому разработчику, тем более если вы работаете над небольшим проектом - Но если вы разрабатываете бэкенд, занимаетесь автоматизацией, микросервисами, обработкой данных или просто много работаете с Python, то на этот релиз точно стоит обратить внимание Релиз кстати запланирован на октябрь этого года
📄Сделал небольшой обзор по Python 3.15 для школы INNOPROG
Приятного чтения!
#python
🤖Это наверное самое полезное использование локальной ИИ-модели на относительно слабом железе
⏺️Использую данный инструмент для быстрой диктовки сообщений и текстов
⏺️Всего-то нужно скачать приложение на ПК, загрузить одну из моделей и настроить горячие клавиши для голосового ввода
⏺️Да, на Windows уже есть встроенный инструмент для распознавания текста, но мне, как пользователю Linux, OpenWhispr очень пригождается
🐱Подробнее о проекте можно почитать в его репозитории и на сайте (ссылка есть в самом репозитории): https://github.com/OpenWhispr/openwhispr📌Интересно, может кто-нибудь из вас что-то извлёк полезного из локальных моделей - поделитесь в комментариях👇 #ai #tips
