Легкий путь в Python
5.1K subscribers
97 photos
18 videos
3 files
155 links
Я — Алексей Яковенко, опытный разработчик Python. Здесь вы найдете статьи, заметки, посты и видео для прокачки навыков программирования 🐍 Интересное найдет и новичок, и профи 💡

📬По вопросам: https://t.me/yakvenalexx
🗣Сообщество: https://vk.cc/cxKNTb
Download Telegram
FastAPI + APScheduler: Простой пошаговый гайд по созданию асинхронного API для мониторинга валют по расписанию на Python

📝 Статья по разработке с подробными объяснениями уже опубликована на Хабре! В ней я подробно рассказываю, как создать асинхронный API для мониторинга курсов валют в банках России с использованием FastAPI и APScheduler для выполнения скриптов по расписанию.

🛠 Получилось полноценное практическое руководство, где мы шаг за шагом разберем:

💎 Реализацию асинхронного парсинга данных
💎 Настройку планировщика задач
💎 Создание системы аутентификации
💎 Разработку REST API endpoints
💎 Деплой приложения в облако

💻 Стек технологий:

FastAPI
Aiohttp
APScheduler
SQLAlchemy
Aiosqlite
BS4

🎯 Основной функционал:

Мониторинг курсов USD и EUR
Фильтрация по диапазонам цен
Поиск лучших курсов
Анализ мин/макс цен
Система ролей и прав доступа

Статья получилась максимально практической и будет полезна как начинающим, так и опытным Python-разработчикам.

✍️ Ссылка на статью: Узнать больше

🔗 Проект на GitHub: GitHub Repository

🔗 Работающий API: API Documentation

👉 Мнение по проекту, вопросы и предложения пишите в комментариях👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍104❤‍🔥2
Друзья, доброе утро! ☀️

У меня появилась идея для нового проекта на FastAPI, и я хотел бы поделиться ею с вами! 💡

Наверняка вы слышали о сервисе Telegraf — это удобная платформа для публикации заметок с возможностью их чтения для всех, у кого есть доступ. Так вот, мне пришло в голову: а почему бы не создать что-то подобное самостоятельно? 🤔

Идея проекта:

Основная логика заключается в следующем:

Авторизация пользователей: Каждый пользователь сможет зарегистрироваться и войти в систему.
Управление постами: После авторизации у пользователей будет возможность:

Создавать посты 📝
Изменять посты ✏️
Удалять посты 🗑
Просматривать свои посты или делиться ими с другими (возможно, с ограничением доступа) 🔒

Мы также добавим возможность публичного доступа к постам — просто по ссылке! 🌐

Функциональность:

💎 Markdown: Для удобства написания статей пользователи смогут передавать текст с поддержкой Markdown. Это сделает наши посты более красивыми и читабельными!
💎 Система тегов: Чтобы улучшить навигацию по контенту, мы реализуем систему тегов со связкой Many-to-Many. Это позволит пользователям легко находить интересные записи по темам. 🔖

🖼 Фронтенд:

Для лаконичности и удобства мы создадим простой фронт для отображения записей. Это обеспечит приятный пользовательский интерфейс и легкость в использовании. 🎨

Как вам такая идея? Хотели бы увидеть ее реализацию? 💬 Делитесь своими мыслями и предложениями в комментариях! Ваше мнение очень важно для меня! 👇😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43👍95😁2
Избегайте дублирования кода с SQLAlchemy: совет для микросервисов!

Когда вам нужно подключаться к одной базе данных через разные микросервисы, можно избежать дублирования кода! 🔄 Давайте рассмотрим один из способов:

🎯 Создайте отдельный API на FastAPI, который объединит методы взаимодействия с базой данных под эндпоинтами (API-методами). Это значит, что код взаимодействия с базой данных и модели будут прописаны в одном месте. 🎯

👉 Вам ничего не помешает использовать собственный API во всех проектах! 🛠 Многочисленные микросервисы смогут работать с базой данных без необходимости дублирования кода. Просто используйте aiohttp для отправки запросов к вашим API-эндпоинтам! 🚀

Так вы сможете централизовать весь код работы с базой данных и легко масштабировать свою систему. 📈

💡 Вот такая идея! Используйте и упрощайте вашу работу с микросервисами. 🧑‍💻
❤‍🔥15🔥84🎉1
Вот такая история вырисовывается по новому проекту. Будет 2 страницы: страница с постами (с отображением по автору и по тегу) и страница самого поста (как на этом скрине).

Фронт уже отрисован весь.

Через API реализован блок кода AUTH (с балванки, немного допилил его) и реализованы методы по управлению постами (можно просмотреть, добавить в черновик, удалить).

Особенно сильно решил заморочиться с частью по SQLAlchemy. Так что если ждали выхода новой части из серии про этот фреймворк, то это она и есть частично.

Тут покажу вам, как работает связь Many to Many на примере дерева тегов и покажу более сложные выборки.
В общем, проект получается интересным.

А, забыл сказать. На входе контент будет лететь в Markdown. Внутри проекта использовал библиотеку Markdown2 для преобразования в HTML)
🔥266👍6👏2🤯2👀1
Мой крайний проект находится на финальной стадии разработки.

Планирую представить полный исходный код уже сегодня.

В рамках этого проекта я продемонстрирую несколько новых технологий FastApi:

💎 Реализация связи Many-to-Many
💎 Эффективное использование зависимостей (Depends)
💎 Простой и элегантный способ реализации пагинации

На прилагаемом скриншоте вы можете увидеть страницу с блогами, которая наглядно демонстрирует эти концепции в действии:

Кликабельные заголовки, ведущие к полному тексту поста
Ссылки на авторов, отображающие все блоги конкретного автора
Кликабельные теги, показывающие подборку постов с выбранным тегом (пример работы связи Many-to-Many)

Будете ждать исходник?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38👍7❤‍🔥53
🚀 Проект мини-блога готов!

Я завершил разработку мини-блога на FastAPI. В проекте реализованы регистрация, аутентификация через JWT, управление записями (создание, удаление, черновики) и фильтрация по тегам. Использованы современные технологии: SQLAlchemy, Alembic, bcrypt, python-jose, и многое другое.

📌 Ссылки на проект:

🌐 Блог: fastapiblog-yakvenalex.amvera.io

📖 Документация API: fastapiblog-yakvenalex.amvera.io/docs

💻 GitHub проекта

🎯 В планах: доработать функционал и выпустить подробную статью о проекте к четвергу. Следите за обновлениями! 🙌
🔥255❤‍🔥4🥰2
Media is too big
VIEW IN TELEGRAM
Видео-демка проекта (просмотр с iPhone 14 Pro)☝️
👍214🔥4👏1
Друзья, я кое-что для вас готовлю😉
🔥385👍5🥰4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Учитывая тенденции такое случится уже в 2030-м)
😁14🤣6😢2🐳2
Друзья, доброе утро! ☀️

Сегодня хочу поделиться с вами чем-то важным и особенным. Это не просто обновление — это шаг вперёд в развитии того, что я делаю.

Давно зрела идея собрать все свои материалы с Хабра в одном месте — создать универсальное "ядро", которое стало бы удобной отправной точкой для поиска нужных статей и заметок. Больше не нужно перелистывать ленту, чтобы найти важную информацию — всё под рукой, структурировано и доступно.

Но есть ещё одна причина, по которой я решил это сделать. На Хабре не всегда можно делиться всем, о чём хочется поговорить. Например, темы вроде Python для начинающих, советы по психологии и мотивации программистов или углублённые разговоры про такие технологии как Redis, Docker, VPS. Эти темы могут быть интересны далеко не всем, но я уверен, что для более узкой аудитории разработчиков они будут полезны.

И вот, в связи с этим, я запускаю новый проект — площадку, на которой буду собирать не только все уже опубликованные материалы, но и эксклюзивный контент, который будет доступен только премиум-подписчикам (об этом скоро расскажу подробнее). Это не просто сайт, это полноценная база знаний, структурированная и удобная, а также место для более глубоких, профессиональных материалов, которые буду создавать специально для вас. 🔥

Подписка на премиум-контент откроет доступ к материалам, которых не будет на других платформах, и даст возможность поддержать развитие этого проекта. Я с нетерпением жду, когда смогу поделиться с вами этим новым уровнем контента и теми мыслями, которые не укладываются в формат привычных публикаций. 💡

🔗 База знаний

Буду рад вашим отзывам, мыслям и предложениям! 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥30🔥16👍10👎6😍41🤡1
Регистрация на сайте yakvenalex.ru как обычный пользователь

Всем, кто хочет зарегистрироваться на сайте и получить доступ к комментариям, хорошая новость!

Завтра будет готов бот, который упростит процесс регистрации. На данный момент я активно занимаюсь адаптацией внутреннего API WikiJS под асинхронный фреймворк Aiohttp. Нахожусь на завершающей стадии разработки внутренней архитектуры API под Telegram-бота.

P.S. Кстати, сайт использует GraphQL в качестве основного API. Если интересен синтаксис - смотрите на скрин выше. Вообще, в планах есть поговорить и об этом подходе, а то все время занимаемся RestApi)
🔥157👍4😱1
Друзья, на следующей неделе будет много контента. Немного зашился 🤯
👍30🔥52🙏2
Друзья, приветствую. Готов черновой вариант новой статьи. Буду очень стараться успеть все вычитать и опубликоваться на Хабре к четвергу. Будете ждать выхода?🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥727🎉4👍3🤔2🤩1
Возможно опубликую раньше чем в четверг)
👍13🔥93😁1
Друзья, приветствую! 🌟 Обещанная статья уже опубликована на Хабре! В ней я рассказал о создании полноценного мини-блога с использованием Python-фреймворка FastAPI и SQLAlchemy 2.0. 📚

Что вас ждет в статье:

💎 Стек технологий: Мы используем FastAPI, SQLAlchemy с асинхронной поддержкой через aiosqlite, Alembic для миграций и другие инструменты.
💎 Функционал проекта: В блоге пользователи смогут регистрироваться и авторизовываться с помощью JWT-токенов. Мы создадим API для управления публикациями: добавление новых постов, изменение их статуса (опубликовано или черновик), а также возможность получения информации о блогах. Все это будет удобно визуализировано с помощью HTML, CSS и JS!
💎 Markdown: Блог будет автоматически оформлять тексты в формате Markdown, что позволит легко создавать красивые и структурированные посты. 📝

Если вы хотите увидеть весь процесс разработки шаг за шагом и получить полезные советы по использованию FastAPI и SQLAlchemy, обязательно загляните в статью!

🔗 Ссылка на работающий проект, документацию, статью и исходный код проекта закреплены ниже. Не упустите возможность узнать что-то новое и вдохновиться на создание собственного блога! 🚀

🔗 Ссылка на статью: Создание блога на FastAPI с нуля: JWT, Markdown и современный веб-дизайн

🔗 Проект на GitHub

🔗 Ссылка на работающий блог

🔗 Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
37🔥18👍10❤‍🔥3
🚀 Друзья, у меня новая идея для статьи!

Давно хотел рассказать вам о том, как работать с FastAPI в сочетании с технологиями Celery (для фоновых задач) и Redis (для кэширования страниц и в качестве брокера для Celery). Следующую статью хочу посвятить этим темам, и чтобы не было скучно, сразу реализуем практический проект. 😉

Итак, идея следующая:

Сервис обмена файлами
Описание: Пользователь загружает файл, а приложение генерирует временную ссылку для скачивания. Ссылка активна определённое время (возможно, с ограничением на вес файла или формат).

Функционал:

📂 Загрузка файла через API и форму на сайте

🔗 Генерация временной ссылки для скачивания

🗂 Хранение ссылок и данных о файлах в Redis с TTL (время жизни)

🧹 Удаление файла после истечения времени ссылки с помощью Celery

🎁 Бонусом расскажу про классную библиотеку для FastApi для простого кэширования страниц (не зря же будем Redis поднимать)

Стек технологий:

💎 FastAPI: Обработка загрузки и скачивания файлов
💎 Redis: Хранение данных о временных ссылках
💎 Celery: Удаление файлов по истечении времени

Что скажете? 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85👍96😍3
🚀 Регистрация на моем личном сайте теперь доступна каждому!

Как зарегистрироваться? Легче не бывает:

🤖 Зайдите в моего телеграм-бота: @yakvenalex_baseBOT
👆 Нажмите кнопку "Зарегистрироваться"
🔄 Бот автоматически создаст ваш аккаунт
🔑 После этого вы получите логин и пароль для входа на сайт

Теперь вы сможете оставлять комментарии на сайте. Более того, в ближайшее время я планирую выпустить несколько эксклюзивных публикаций, доступных только для зарегистрированных пользователей!

Благодаря системе ролей на yakvenalex.ru, авторизованные пользователи смогут получать доступ к уникальному контенту.

🤔 Хотите узнать, как устроен этот бот и какие у него возможности?

📝 Оставьте комментарий, если интересно заглянуть за кулисы проекта yakvenalex.ru и узнать о технических деталях его работы!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥174👍3🤔1
Если вы работали с Excel через Python, то могли столкнуться с ситуацией, что формат xls не поддерживается. 📊 Например, Openpyxl работает только с xlsx. В таком случае нам ничего не мешает написать собственный конвертер в пару строк кода. 🛠

Во-первых, нам понадобятся для этой задачи 2 легковесные библиотеки: pyexcel_xls и pyexcel_xlsx. Устанавливаем. 📚

Далее выполняем импорты:
from pyexcel_xls import get_data
from pyexcel_xlsx import save_data
import os


Теперь напишем простую функцию для конвертации из xls в xlsx:

def convert_xls_to_xlsx(xls_path):
# Получаем имя файла без расширения
file_name = os.path.splitext(xls_path)[0]
xlsx_path = file_name + '.xlsx'

# Читаем данные из .xls файла
xls_data = get_data(xls_path)

# Сохраняем данные в .xlsx формате
save_data(xlsx_path, xls_data)

return xlsx_path

Далее можно использовать ее в таком формате:
if file_path.endswith('.xls'):
print("Конвертация .xls в .xlsx...")
file_path = convert_xls_to_xlsx(file_path)
print(f"Файл сконвертирован: {file_path}")

Например, как часть более сложной функции с тем же openpyxl.

P.S. Бота пишу сейчас. Это кусок с реальной практики. Решил, может кому полезно будет) 🤖💡
👍32🔥7❤‍🔥41
🖥 Превращаем командную строку Windows в мощный инструмент!

Хотите улучшить свой опыт работы с терминалом в Windows? Я написал статью о том, как за пару минут превратить обычную командную строку в продвинутый инструмент с крутыми возможностями:

➡️Табы (вкладки терминалов)
➡️Переименование табов
➡️Разделение экрана на несколько частей
➡️Поддержка команд Linux и macOS
➡️SSH из коробки и многое другое!

Полное руководство по настройке ConEmu и Git для создания идеальной среды разработки.

🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍83🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Друзья, доброе утро! Спешу поделиться отличной новостью!

🎉 Учебный проект, о котором я рассказывал пару дней назад, успешно завершен!

📁 Представляю вам файлообменник с временным хранилищем на сервере.

Вот как он работает:

1️⃣ Выбираете файл
2️⃣ Указываете срок хранения (от 1 минуты до 24 часов)
3️⃣ Получаете две ссылки: для sharing и для удаления файла

🔄 Когда вы нажимаете "Отправить", FastAPI через Redis отправляет задачу Celery. Задача? Удалить файл по истечении срока!

🧠 Изюминка проекта: FastAPI и Celery - два независимых приложения, общающихся только через Redis.

📝 Подробности о технической части ждите в моей новой статье на Хабре!

👀 А пока можете:

🔗 Посмотреть проект в действии

🔗 Изучить код FastAPI приложения

🔗 Заглянуть в код Celery приложения

🌸 Бонус: в приложенном видео вы увидите работу приложения и функционал Celery в режиме Flower.

💡 Остались вопросы? Задавайте в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍75😍3❤‍🔥1🥰1