Skip to content

安全に使えるユースケース

Djangoで安全に実装できるユースケースを詳しく解説します。

1. トランザクション内でのデータベース操作

Section titled “1. トランザクション内でのデータベース操作”
from django.db import transaction
@transaction.atomic
def create_order(order_data):
# ✅ 安全: トランザクション内でのデータベース操作のみ
order = Order.objects.create(**order_data)
# ✅ 安全: 同じトランザクション内での在庫更新
for item in order_data['items']:
inventory = Inventory.objects.get(product_id=item['product_id'])
inventory.stock -= item['quantity']
inventory.save()
return order

なぜ安全か:

  • ACID特性: トランザクションのACID特性が保証される
  • ロールバック: エラー時に自動的にロールバック
  • 一貫性: データの一貫性が保たれる
from celery import Celery
celery_app = Celery('tasks', broker='redis://localhost:6379')
@celery_app.task
def process_order(order_id):
# ✅ 安全: 非同期処理をCeleryで実行
order = Order.objects.get(id=order_id)
payment_service.charge_payment(order.id, order.amount)

なぜ安全か:

  • 非同期処理: 長時間実行される処理を非同期で実行
  • 自動リトライ: Celeryのリトライ機能を使用
  • エラーハンドリング: Celeryのエラーハンドリング機能を使用

安全に使えるユースケースのポイント:

  • トランザクション内でのデータベース操作: ACID特性が保証される
  • Celeryによる非同期処理: 長時間実行される処理を非同期で実行

適切なユースケースの選択により、安全で信頼性の高いDjangoアプリケーションを構築できます。