L o a d i n g
Микросервисы в разработке на Python с Django и FastAPI Парсинг данных

Микросервисы — это подход к проектированию приложений, при котором система делится на отдельные сервисы, каждый из которых выполняет конкретную задачу. В контексте Python, популярными инструментами для создания микросервисов являются Django и FastAPI. Рассмотрим, как можно использовать микросервисы на практике.

Зачем микросервисы?

Микросервисы подходят, если:

  • Ваше приложение растёт и его трудно поддерживать.

  • Вам нужно масштабировать отдельные части приложения.

  • Разработкой занимаются разные команды.

Основные принципы

  1. Разделение ответственности: каждый сервис выполняет одну задачу.

  2. Автономность: сервисы не зависят друг от друга напрямую.

  3. Взаимодействие через API: сервисы общаются через HTTP (REST, GraphQL) или gRPC.

Пример реализации

Рассмотрим маркетплейс с тремя микросервисами:

  1. Каталог товаров (Django).

  2. Обработка заказов (FastAPI).

  3. Сервис оплаты (FastAPI).

Каталог товаров (Django)

Каталог отвечает за управление товарами и их отображение.

Шаги создания:

Создайте проект Django:

django-admin startproject catalog_service
cd catalog_service

Создайте приложение для управления товарами:

python manage.py startapp products

Определите модель товара:

# products/models.py
from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    in_stock = models.BooleanField(default=True)

    def __str__(self):
        return self.name

Настройте маршруты для API:

# products/views.py
from django.http import JsonResponse
from .models import Product

def product_list(request):
    products = Product.objects.all().values()
    return JsonResponse(list(products), safe=False)

# catalog_service/urls.py
from django.urls import path
from products.views import product_list

urlpatterns = [
    path('api/products/', product_list, name='product_list'),
]

Обработка заказов (FastAPI)

Этот сервис отвечает за создание и управление заказами.

Шаги создания:

Установите FastAPI и Uvicorn:

pip install fastapi uvicorn

Создайте файл orders_service.py:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Order(BaseModel):
    product_id: int
    quantity: int

orders = []

@app.post("/api/orders/")
def create_order(order: Order):
    orders.append(order)
    return {"message": "Order created", "order": order}

@app.get("/api/orders/")
def get_orders():
    return orders

Запустите сервер:

uvicorn orders_service:app --reload

 

Сервис оплаты (FastAPI)

Этот сервис взаимодействует с платёжными системами.

Шаги создания:

Создайте файл payment_service.py:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Payment(BaseModel):
    order_id: int
    amount: float

@app.post("/api/payments/")
def process_payment(payment: Payment):
    return {"message": "Payment processed", "payment": payment}

Запустите сервер:

uvicorn payment_service:app --reload

Взаимодействие между сервисами

Для взаимодействия микросервисов используйте HTTP-запросы. Например, сервис обработки заказов может отправлять запросы в сервис оплаты:

import requests

response = requests.post(
    "http://localhost:8000/api/payments/",
    json={"order_id": 1, "amount": 100.0}
)
print(response.json())

Заключение

Микросервисы на Python с использованием Django и FastAPI позволяют создавать гибкие и масштабируемые приложения. Этот подход подходит для сложных проектов, где каждая часть системы может быть разработана, развернута и масштабирована независимо. Начните с разделения вашей системы на модули и создания API для взаимодействия между ними.

Написать комментарий

Вы можете оставить комментарий автору статьи Обязательные поля помечены *