en
Feedback
Григорий IT://home

Григорий IT://home

Open in Telegram

Блог препода и Backend‑разработчика - личный опыт, советы и интересное из моих занятий и проектов Автор: @ad_astraa1

Show more
300
Subscribers
No data24 hours
-17 days
-430 days
Posts Archive
⚡️Aiohttp: ускоряем работу с API в Python Представь ситуацию: ты разрабатываешь бэкенд веб-платформу, которой необходимо регу
⚡️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 - библиотека помощнее, которая нужна в ситуациях, когда начинается серьёзная асинхронная работа с сетью А какие асинхронные библиотеки вы использовали в своих проектах?

Сериализаторы простыми словами Слово страшное (много букв ааа), но если совсем по-простому его пояснять, то сериализатор - эт
Сериализаторы простыми словами Слово страшное (много букв ааа), но если совсем по-простому его пояснять, то сериализатор - это переводчик между 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 они используются почти в каждом запросе к API

👨‍💻 FastAPI vs Django vs Flask - какая разница? Разбираемся вместе с Григорием, преподавателем INNOPROG Те, кто только дела
👨‍💻 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 Но важно помнить: лучшего фреймворка вообще не существует Есть фреймворк, который лучше подходит под конкретную задачу! А с какого из них начинали вы? Пишите в комментариях к посту 👇

👨‍💻 FastAPI vs Django vs Flask - какая разница? Разбираемся вместе с Григорием, преподавателем INNOPROG Те, кто только дела
👨‍💻 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.
Недавно ко мне обратился заказчик, нужно было реализовать фичу общих корзин для небольшого сервиса доставки ❓Смысл такой: 1. один пользователь создаёт общую корзину 2. получает ссылку или QR 3. скидывает друзьям 4. каждый заходит и добавляет свои позиции 5. а потом создатель оформляет и оплачивает весь заказ Отдельно сделал фиксацию оплаты: создатель видит, кто сколько должен перевести, участники могут отметить перевод, а создатель - подтвердить 🔒После старта оплаты корзина блокируется, чтобы никто уже не менял состав заказа На скрине выше пока черновой интерфейс, но сама backend-логика уже работает #projects

💻Анатомия бэкенда #backend
💻Анатомия бэкенда #backend

Всем такого директорства😁 #meme

🐍Универсальность Python подкрепляется широким выбором фреймворков для разных задач #python
+3
🐍Универсальность Python подкрепляется широким выбором фреймворков для разных задач #python

Всех с первым днём лета, друзья🔅 Тепло, солнце и водоёмы ждут🥃
Всех с первым днём лета, друзья🔅 Тепло, солнце и водоёмы ждут🥃

💡Друзья, проголосуйте пожалуйста за темы, которые вам было бы интересно изучить, реазизация планируется на фреймворках FastAPI/Django

🤌Mamma mia 🇮🇹 #meme
🤌Mamma mia 🇮🇹 #meme

Маскотом бота стал кот моих родителей Локи😁 Можете проверять, маскот уже добавлен😊 @grigo_it_English_bot #pet
Маскотом бота стал кот моих родителей Локи😁 Можете проверять, маскот уже добавлен😊 @grigo_it_English_bot #pet

💻Для тех кто на сервере: мини-шпаргалка по HTTP-статусам 📌Сохрани, пригодится #tips
💻Для тех кто на сервере: мини-шпаргалка по HTTP-статусам 📌Сохрани, пригодится #tips

🇬🇧Ну чтож, спустя столько времени у меня наконец добрались руки до бота для изучения английских слов, о котором я писал аж
🇬🇧Ну чтож, спустя столько времени у меня наконец добрались руки до бота для изучения английских слов, о котором я писал аж в декабре Возможности бота: ⏺️Интервальное повторение изучаемых слов ⏺️Ежедневные напоминания ⏺️Викторина по изучаемым словам ⏺️Отлеживание прогресса друзей Проект в данный момент работает корректно, поправил множество багов, вы можете его протестировать тут 👉 @grigo_it_English_bot 💬Пишите в лс или тут в комментах, если возникнут проблемы при работе —————— ⚡️Также в ближайшее время планирую создать животного-маскота для данного бота (как Дуо у Дуолинга, да-да), предлагайте своих животных в комментариях 👇 #pet

💻Уже некоторое время участвую в командной разработке одного небольшого стартап-проекта как backend-разработчик На прошлой не
💻Уже некоторое время участвую в командной разработке одного небольшого стартап-проекта как backend-разработчик На прошлой неделе плотно занимался серверной частью: доработал REST API, описал основные сценарии работы сервиса и подготовил для команды Swagger-документацию👩‍💻 Проект пишу на Django + DRF 🔨, в ближайшее время планируется интеграция с мобилкой на Flutter👩‍💻 ⏺️Как думаете, из какой сферы проект? #pet

🐱Друзья, в свете слухов об очередной мишени для блокировок предлагаю небольшой интерактив - обмен GitHub-аккаунтами ⏺️Делите
🐱Друзья, в свете слухов об очередной мишени для блокировок предлагаю небольшой интерактив - обмен GitHub-аккаунтами ⏺️Делитесь вашими аккаунтами в комментариях, бонусом можете кратко описать пару интересных проектов🤖 📌Мой аккаунт: github.com/grigoscope #git #github

🧠 #meme

Python 3.15 выглядит довольно интересно - И не потому, что там появилась одна огромная фича, после которой срочно надо всё бр
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