Skip to content

Instantly share code, notes, and snippets.

View Eugene-Fed's full-sized avatar
🏠
Working from home

Eugene Fedyakin Eugene-Fed

🏠
Working from home
View GitHub Profile

Проблема кодировки в GitBash на Windows

При работе с GitBash на Windows часто возникают проблемы с кодировками:

  1. Кракозябры в названии коммитов на Github/Gitlab
  2. Битые символы вместо букв в интерфейсе Gitbash

Иногда можно встретить рекомендацию указывать в начале python-файла кодировку в формате
# -*- coding: utf-8 -*-,
однако на момент написания этой статьи (август 2025 года) -- это не помогает.

Разделим проблему с кодировкой на 2 отдельных и решим их по очереди.

В экосистеме Python было несколько попыток создать фреймворки, которые могли бы конкурировать с FastAPI, особенно в области высокопроизводительных асинхронных приложений. Однако не все из них смогли закрепиться на рынке или получить широкое признание. Вот список некоторых конкурентов FastAPI, которые либо перестали развиваться, либо не получили значительной популярности:


1. Vibora

  • Описание: Vibora был позиционирован как "супербыстрый" асинхронный веб-фреймворк, вдохновленный Flask. Он обещал высокую производительность благодаря полной асинхронности и оптимизации.
  • Почему не выжил:
    • Проект был активно разработан в 2018–2019 годах, но затем разработка замедлилась и практически прекратилась.
    • Недостаточно зрелая экосистема: отсутствие поддержки ORM, слабая документация и ограниченная гибкость.
  • Появление более зрелых решений, таких как FastAPI, затмило Vibora.

В FastAPI-приложениях часто используются синхронные библиотеки, которые могут блокировать event loop, если не вынесены в отдельные потоки. Вот список самых распространённых:


📚 1. Работа с базами данных

Библиотека Назначение Асинхронный аналог
psycopg2 PostgreSQL asyncpg, sqlalchemy.ext.asyncio
mysql-connector-python MySQL aiomysql
sqlite3 SQLite aiosqlite

Проблема асинхронного FastAPI

🔴 Пример блокировки Event Loop

from fastapi import FastAPI
import time  # Синхронная библиотека!

app = FastAPI()

@app.get("/blocking-endpoint")
async def blocking_endpoint():

Оглавление

В стандарте SQL рекурсивные запросы реализуются через WITH RECURSIVE (Common Table Expression, CTE).


1. Пример рекурсивного запроса

Вот список конкретных типов приложений, которые можно построить на базе FastAPI, с примерами и пояснениями, почему они подходят для этого фреймворка:


1. CRM-система (Client Relationship Management)

  • Описание:
    • API для управления клиентами, сделками, коммуникацией.
  • Интеграция с электронной почтой, чат-ботами, аналитикой.

Вот перечень инструментов и проблем, которые они решают в контексте разработки на FastAPI:


1. Методы и типы данных FastAPI

  • Проблема: Создание API с валидацией данных и автоматической документацией.
  • Решение:
  • Встроенные HTTP-методы (GET, POST, etc.) для определения эндпоинтов.

Для интеграции Gunicorn с FastAPI необходимо настроить веб-сервер, который будет управлять процессами и обрабатывать HTTP-запросы. Gunicorn часто используется для запуска асинхронных приложений в продакшене, так как позволяет эффективно масштабировать нагрузку. Вот пошаговое руководство:


1. Установка зависимостей

pip install fastapi gunicorn uvicorn

Для интеграции Memcached в FastAPI можно использовать библиотеки вроде pymemcache (синхронный) или aiomcache (асинхронный). Вот подробное руководство:


1. Установка зависимостей

pip install fastapi pymemcache aiomcache