Ответ
На предыдущем проекте, который представлял собой разработку 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 — он такой, волшебный, блядь. Сделал пару классов, и уже можно фронтендерам кидать ссылку на сваггер. Красота!