idempotent

عملیات idempotent عملیاتی است که اجرای چندبارهٔ آن با ورودی یکسان، همان اثر موردنظرِ یک بار اجرا را دارد.

توضیح

چنین عملیاتی وضعیت مطلوب را برقرار می‌کند و تکرارش اثر تازه‌ای روی آن وضعیت نمی‌گذارد؛ مثلاً تنظیم یک مقدار روی ۵، برخلاف افزودن ۵ به آن. در HTTP،؜ روش‌هایی مثل PUT و DELETE معنای idempotent دارند؛ از پیاده‌سازی server انتظار می‌رود این رفتار را حفظ کند، اما رعایت آن تضمین‌شده نیست. این ویژگی به معنی یکسان بودن پاسخ‌ها یا نبودن اثر جانبی مثل ثبت log نیست؛ معیار، اثر موردنظر عملیات است.

مثال

settings = {"enabled": False}

def enable():
    settings["enabled"] = True

enable()
enable()
assert settings["enabled"] is True

چرا مهم است

در کار با API و خودکارسازی زیرساخت، ممکن است مجبور شوی عملیاتی را دوباره اجرا کنی. اگر عملیات idempotent باشد، تکرار آن پس از قطع ارتباط یا نامشخص بودن نتیجه، اثر موردنظر را چندبرابر نمی‌کند.

این کارت را هوش مصنوعی نوشته و دو بار با هوش مصنوعی بررسی شده است.

بر پایهٔ «Idempotent» از MDN Web Docs (Mozilla Contributors)، با مجوز CC BY-SA 2.5. این کارت هم با همین مجوز منتشر شده است.

مطالبی با این مفهوم

  1. python

    پرداخت با Python؛ اصلاح سفارش‌هایی که در pending گیر می‌کنند

    توقف برنامه پس از پرداخت و پیش از ثبت نتیجه در database می‌تواند سفارش را در وضعیت pending نگه دارد. این آموزش با یک کلید ثابت برای تکرار درخواست و یک reconciliation job،؜ این فاصله را مدیریت می‌کند.

    یادگیری: ۴ مفهومافزوده‌شده dev.to

  2. Pyinfra

    آشنایی با pyinfra؛ خودکارسازی زیرساخت با Python و SSH

    pyinfra کد Python را به دستورهای shell تبدیل می‌کند و روی server‌ها اجرا می‌کند. این آموزش، مدل declarative و idempotent آن، کاربردها و محدودیت‌هایش را توضیح می‌دهد.

    یادگیری: ۴ مفهومافزوده‌شده death.andgravity.com