Какие библиотеки Python вы использовали на предыдущем проекте?

Ответ

На предыдущем проекте, который представлял собой разработку RESTful API и системы обработки данных, я активно использовал следующие библиотеки Python:

Для веб-разработки и API:

  • Django: Основной веб-фреймворк для быстрой разработки бэкенда, обеспечивающий ORM, админ-панель, систему аутентификации и маршрутизацию.
  • Django REST Framework (DRF): Расширение для Django, позволившее быстро создавать мощные и гибкие RESTful API с сериализаторами, ViewSets и аутентификацией.
  • Requests: Использовался для выполнения исходящих HTTP-запросов к внешним сервисам и API.

Для работы с данными и базой данных:

  • SQLAlchemy: Мощный ORM для работы с реляционными базами данных, предоставляющий гибкий и эффективный способ взаимодействия с БД, особенно для сложных запросов и миграций.
  • Pandas: Применялся для предобработки, анализа и трансформации больших объемов данных, поступающих из различных источников, перед их сохранением в БД или передачей в другие системы.

Для асинхронных задач и кеширования:

  • Celery: Распределенная система очередей задач, использовалась для выполнения длительных операций (например, генерация отчетов, отправка уведомлений, обработка изображений) в фоновом режиме, не блокируя основной поток приложения.
  • Redis: Выступал в качестве брокера сообщений для Celery и как высокопроизводительное хранилище для кеширования данных, что значительно ускоряло работу приложения.

Для тестирования и парсинга:

  • Pytest: Фреймворк для написания и запуска тестов, обеспечивающий чистый синтаксис и мощные возможности для юнит- и интеграционного тестирования.
  • BeautifulSoup и Scrapy: Использовались для парсинга веб-страниц и сбора данных из открытых источников.

Пример использования Django REST Framework: Для демонстрации работы с DRF, вот как можно определить сериализатор и ViewSet для простой модели Product:

# Предположим, у нас есть модель Product в models.py
# from django.db import models
# class Product(models.Model):
#     name = models.CharField(max_length=100)
#     price = models.DecimalField(max_digits=10, decimal_places=2)
#     description = models.TextField(blank=True)

from rest_framework import serializers, viewsets
from .models import Product # Импортируем нашу модель

class ProductSerializer(serializers.ModelSerializer):
    """
    Сериализатор для модели Product.
    Преобразует объекты Product в JSON и обратно.
    """
    class Meta:
        model = Product
        fields = ['id', 'name', 'price', 'description']
        read_only_fields = ['id'] # ID обычно генерируется автоматически

class ProductViewSet(viewsets.ModelViewSet):
    """
    ViewSet для работы с коллекцией продуктов.
    Предоставляет CRUD-операции через REST API.
    """
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

Этот код позволяет быстро создать API-эндпоинты для создания, чтения, обновления и удаления продуктов.

Ответ 18+ 🔞

Вот, смотри, как я на предыдущем проекте всё это крутил-вертел. Там был REST API и система для обработки данных, ну, классика жанра, блядь. Библиотеки использовал — овердохуища, но самые рабочие, ёпта.

По вебу и API:

  • Django — это, блядь, мой основной танк. На нём всё и ехало: админка, ORM, аутентификация, маршруты — всё из коробки, красота.
  • Django REST Framework (DRF) — ну это просто магия, ёпта. Берёшь DRF, и твоё API как будто на стероидах. Сериализаторы, ViewSet'ы — всё для того, чтобы не писать тонны однообразного кода.
  • Requests — ну а куда без него? Когда нужно было потыкать палкой в какой-нибудь внешний сервис, он всегда под рукой.

По данным и базам:

  • SQLAlchemy — вот это, блядь, зверь. Когда нужно было не просто CRUD, а какие-то еб*нические запросы с джойнами и подзапросами, он выручал. Гибкий, как удав, и мощный.
  • Pandas — а это, сука, мой молоток для данных. Прилетает куча сырых цифр из разных дыр, а я их — хрясь через Pandas, почистил, преобразовал, и уже можно в базу пихать или куда надо. Без него — просто пиздец ручной работы.

По асинхронщине и кешу:

  • Celery — о, этот чувак спасал от долгих операций. Отправить тысячу писем, сгенерировать отчёт на 500 страниц — всё это уходило в фоновые задачи, чтобы основное приложение не висло, как тряпка.
  • Redis — служил и брокером для Celery, и кешом. Без него скорость была бы — хуй с горы, а с ним — летало.

По тестам и парсингу:

  • Pytest — тесты писать на нём — одно удовольствие, блядь. Чисто, понятно, и не нужно изобретать велосипед.
  • BeautifulSoup и Scrapy — когда нужно было пошарить данные по интернету, они были моими глазами и руками. Scrapy — для серьёзного скрапинга, а BeautifulSoup — для быстрых выковыриваний.

А вот, смотри, как на DRF это выглядело в коде. Допустим, есть модель Product:

# Предположим, у нас есть модель Product в models.py
# from django.db import models
# class Product(models.Model):
#     name = models.CharField(max_length=100)
#     price = models.DecimalField(max_digits=10, decimal_places=2)
#     description = models.TextField(blank=True)

from rest_framework import serializers, viewsets
from .models import Product # Импортируем нашу модель

class ProductSerializer(serializers.ModelSerializer):
    """
    Сериализатор для модели Product.
    Преобразует объекты Product в JSON и обратно.
    """
    class Meta:
        model = Product
        fields = ['id', 'name', 'price', 'description']
        read_only_fields = ['id'] # ID обычно генерируется автоматически

class ProductViewSet(viewsets.ModelViewSet):
    """
    ViewSet для работы с коллекцией продуктов.
    Предоставляет CRUD-операции через REST API.
    """
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

И всё, ёпта! После этого у тебя уже готовы все эндпоинты на создание, чтение, обновление и удаление продуктов. DRF — он такой, волшебный, блядь. Сделал пару классов, и уже можно фронтендерам кидать ссылку на сваггер. Красота!