Lewati ke konten utama
Didit Raih $7,5 Juta untuk Membangun Infrastruktur Identitas dan Fraud
Didit
Kembali ke blog
Blog · 6 Maret 2026

Percobaan Ulang yang Andal untuk Panggilan API Verifikasi Identitas Idempoten di Python (ID)

Membangun sistem yang tangguh memerlukan penanganan cermat terhadap kegagalan API sementara. Panduan ini membahas implementasi mekanisme percobaan ulang yang kuat untuk panggilan API verifikasi identitas idempoten di Python.

Oleh DiditDiperbarui
robust-retry-mechanism-idempotent-api-calls-python.png

Idempoten adalah KunciDesain panggilan API Anda agar idempoten, yang berarti permintaan dapat dilakukan berkali-kali tanpa mengubah hasil setelah eksekusi awal, mencegah efek samping yang tidak diinginkan selama percobaan ulang.

Backoff Eksponensial PentingImplementasikan strategi backoff eksponensial dengan jitter untuk menghindari membanjiri API dengan percobaan ulang dan untuk mengatur waktu upaya secara efektif, meningkatkan peluang keberhasilan saat masalah sementara teratasi.

Kunci Idempoten untuk KonsistensiGunakan kunci idempoten unik dalam permintaan API Anda untuk memastikan bahwa meskipun permintaan diterima berkali-kali karena percobaan ulang, operasi yang mendasarinya hanya diproses sekali, menjaga integritas data.

Didit Menyederhanakan KetahananPlatform verifikasi identitas AI-native Didit dibangun dengan mempertimbangkan idempoten, menawarkan pendekatan yang mengutamakan pengembang dengan API yang bersih yang secara inheren mendukung mekanisme percobaan ulang dan kunci idempoten, di samping KYC Inti Gratis dan arsitektur modular.

Dalam dunia verifikasi identitas, keandalan dan integritas data adalah yang terpenting. Saat berintegrasi dengan API eksternal, terutama untuk operasi kritis seperti Verifikasi ID, gangguan jaringan, pemadaman layanan sementara, atau pembatasan laju dapat menyebabkan permintaan gagal. Mekanisme percobaan ulang yang dirancang dengan baik sangat penting untuk membangun aplikasi yang kuat yang dapat menahan kegagalan sementara ini tanpa mengorbankan konsistensi data atau pengalaman pengguna. Artikel ini membahas pembangunan mekanisme percobaan ulang yang kuat untuk panggilan API verifikasi identitas idempoten di Python, memastikan sistem Anda tangguh dan dapat diandalkan.

Memahami Idempoten dalam Panggilan API

Sebelum masuk ke strategi percobaan ulang, penting untuk memahami konsep idempoten. Operasi idempoten adalah operasi yang dapat diterapkan berkali-kali tanpa mengubah hasil setelah aplikasi awal. Misalnya, mengatur status pengguna menjadi 'terverifikasi' adalah idempoten; melakukannya sekali atau sepuluh kali menghasilkan status akhir yang sama. Sebaliknya, operasi seperti 'membuat pengguna baru' biasanya tidak idempoten, karena menjalankannya berkali-kali akan membuat banyak pengguna.

Untuk verifikasi identitas, banyak operasi, terutama yang melibatkan pengiriman dokumen untuk Verifikasi ID Didit atau memulai pemeriksaan Liveness Pasif & Aktif, idealnya harus dirancang agar idempoten. Ini berarti jika Anda mengirimkan permintaan verifikasi yang sama dua kali (mungkin karena batas waktu jaringan), API harus mengenalinya sebagai duplikat dan memprosesnya hanya sekali, atau mengembalikan hasil pemrosesan asli, daripada memulai verifikasi baru yang berlebihan.

API Didit dirancang dengan mempertimbangkan idempoten, memungkinkan Anda mencoba ulang permintaan dengan percaya diri. Ini sering dicapai melalui penggunaan idempotency_key di header atau badan permintaan, pengidentifikasi unik yang dihasilkan oleh klien Anda untuk setiap permintaan logis yang berbeda. Server API menggunakan kunci ini untuk mendeteksi dan mengabaikan permintaan duplikat dalam jangka waktu tertentu, memastikan bahwa meskipun mekanisme percobaan ulang Anda aktif, operasi inti hanya dijalankan sekali.

Kebutuhan akan Mekanisme Percobaan Ulang yang Andal

Mengapa percobaan ulang begitu penting? Bayangkan skenario di mana pengguna mengirimkan ID mereka untuk verifikasi. Gangguan jaringan terjadi, dan aplikasi Anda tidak menerima respons. Tanpa mekanisme percobaan ulang, pengguna mungkin dibiarkan tidak jelas, atau sistem Anda mungkin salah mengira verifikasi gagal. Mekanisme percobaan ulang secara otomatis mengirim ulang permintaan, meningkatkan kemungkinan keberhasilan setelah masalah sementara teratasi. Namun, strategi percobaan ulang yang naif dapat memperburuk masalah dengan:

  • Membanjiri API yang sudah kesulitan dengan banjir permintaan berulang.
  • Mencapai batas laju lebih cepat.
  • Membuat catatan duplikat atau efek samping yang tidak diinginkan jika API tidak idempoten.

Oleh karena itu, strategi yang kuat diperlukan.

Menerapkan Backoff Eksponensial dengan Jitter

Landasan mekanisme percobaan ulang yang kuat adalah backoff eksponensial dengan jitter. Strategi ini melibatkan:

  1. Backoff Eksponensial: Alih-alih mencoba ulang segera, tunggu periode yang semakin lama di antara percobaan ulang (misalnya, 1 detik, lalu 2 detik, lalu 4 detik, lalu 8 detik). Ini memberi server API waktu untuk pulih.
  2. Jitter: Tambahkan penundaan acak kecil ke setiap periode backoff. Ini mencegah semua klien mencoba ulang pada waktu yang sama persis, yang dapat menciptakan masalah thundering herd dan membanjiri layanan lagi.

Mari kita lihat contoh Python menggunakan pustaka requests dan dekorator percobaan ulang kustom:


import requests
import time
import random
from functools import wraps

def retry_with_exponential_backoff(max_retries=5, initial_delay=1, factor=2, jitter=0.1):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            delay = initial_delay
            for i in range(max_retries):
                try:
                    return func(*args, **kwargs)
                except requests.exceptions.RequestException as e:
                    if i == max_retries - 1:
                        raise # Re-raise the last exception if all retries fail
                    print(f"Request failed: {e}. Retrying in {delay:.2f} seconds...")
                    time.sleep(delay + (random.random() * jitter * delay))
                    delay *= factor
        return wrapper
    return decorator

# Example usage with a Didit API call
@retry_with_exponential_backoff(max_retries=3, initial_delay=0.5)
def create_didit_session(api_key, workflow_id, vendor_data):
    url = "https://verification.didit.me/v3/session/"
    headers = {
        "x-api-key": api_key,
        "Content-Type": "application/json"
    }
    data = {
        "workflow_id": workflow_id,
        "vendor_data": vendor_data,
        "callback": "https://yourapp.com/didit/webhook/handler"
    }
    response = requests.post(url, headers=headers, json=data, timeout=10)
    response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
    return response.json()

# --- In your application code ---
# try:
#     session_data = create_didit_session(
#         api_key="YOUR_DIDIT_API_KEY",
#         workflow_id="YOUR_WORKFLOW_ID",
#         vendor_data="user_abc_123"
#     )
#     print(f"Didit Session created: {session_data['url']}")
# except requests.exceptions.RequestException as e:
#     print(f"Failed to create Didit session after multiple retries: {e}")

Dekorator ini dapat diterapkan pada fungsi apa pun yang melakukan panggilan API, memberikan solusi yang fleksibel dan dapat digunakan kembali. Untuk operasi kritis seperti Penyaringan AML atau Verifikasi NFC, mekanisme percobaan ulang yang kuat seperti itu sangat diperlukan.

Memanfaatkan Kunci Idempoten untuk Konsistensi Data

Sementara backoff eksponensial menangani masalah jaringan sementara, kunci idempoten menangani potensi pemrosesan duplikat jika permintaan berhasil mencapai server tetapi respons hilang. Dengan menambahkan kunci idempoten unik yang dibuat klien ke setiap permintaan, Didit API dapat menjamin bahwa operasi dilakukan hanya sekali, bahkan jika permintaan dicoba ulang berkali-kali. Ini sangat penting untuk transaksi keuangan atau operasi yang mengubah status.

Saat membuat permintaan POST untuk membuat sesi untuk Verifikasi ID Didit, Anda mungkin menyertakan idempotency_key dalam permintaan Anda. Jika permintaan pertama habis waktu, dan Anda mencoba ulang dengan kunci yang sama, sistem Didit akan mengenali kunci tersebut dan mengembalikan hasil pemrosesan awal yang berhasil daripada memulai yang baru. Ini mencegah skenario seperti secara tidak sengaja memicu dua verifikasi terpisah untuk pengguna yang sama.

Menangani Berbagai Jenis Kesalahan dan Kode Status

Tidak semua kesalahan memerlukan percobaan ulang. Misalnya, 400 Bad Request atau 401 Unauthorized menunjukkan kesalahan sisi klien yang tidak akan diselesaikan dengan mencoba ulang. Mekanisme percobaan ulang Anda idealnya harus membedakan antara kesalahan sementara (misalnya, 429 Too Many Requests, 5xx Server Errors, batas waktu jaringan) dan kesalahan permanen. requests.exceptions.RequestException dalam contoh di atas menangkap masalah terkait jaringan dan kesalahan server secara cukup luas. Untuk kontrol yang lebih terperinci, Anda dapat memeriksa response.status_code dalam blok try sebelum memunculkan HTTPError.

Bagaimana Didit Membantu

Didit, sebagai platform identitas AI-native yang mengutamakan pengembang, dibangun dari awal untuk mendukung integrasi yang tangguh. Arsitektur modular dan API yang bersih secara inheren menyederhanakan implementasi mekanisme percobaan ulang yang kuat. Platform Didit merangkul idempoten, memastikan bahwa operasi seperti memulai Verifikasi ID, melakukan Pencocokan Wajah 1:1, atau melakukan Penyaringan AML aman untuk dicoba ulang. Kami mencapai ini dengan:

  • Desain API Idempoten: API kami dibuat untuk menangani permintaan berulang dengan baik, seringkali dengan mendukung kunci idempoten, yang berarti logika percobaan ulang Anda bisa lebih sederhana dan lebih dapat diandalkan.
  • Kode Kesalahan yang Jelas: Didit menyediakan kode status HTTP dan pesan kesalahan yang eksplisit, memungkinkan Anda untuk secara tepat menentukan apakah suatu kesalahan bersifat sementara dan dapat dicoba ulang atau memerlukan intervensi pengembang.
  • Pengalaman yang Mengutamakan Pengembang: Dengan sandbox instan dan dokumentasi publik yang komprehensif, pengembang dapat dengan cepat mengintegrasikan dan menguji mekanisme percobaan ulang mereka terhadap layanan Didit.
  • KYC Inti Gratis: Anda dapat mulai membangun dan menguji integrasi kuat Anda, termasuk logika percobaan ulang, menggunakan tingkat gratis Didit, membuatnya hemat biaya untuk memastikan keandalan sejak hari pertama.
  • Alur Kerja yang Diorkestrasi: Mesin tanpa kode kami untuk KYC memungkinkan Anda untuk menentukan alur verifikasi yang kompleks. Saat menggunakan tautan verifikasi yang dibuat melalui API, pembuatan sesi yang mendasarinya dirancang untuk ketahanan, melengkapi strategi percobaan ulang sisi klien Anda.

Dengan memanfaatkan platform Didit, Anda menghabiskan lebih sedikit waktu mengkhawatirkan nuansa kegagalan komunikasi API dan lebih banyak waktu berfokus pada pembangunan pengalaman verifikasi identitas yang aman dan sesuai untuk pengguna Anda.

Siap Memulai?

Siap melihat Didit beraksi? Dapatkan demo gratis hari ini.

Mulai verifikasi identitas secara gratis dengan tingkat gratis Didit.

Infrastruktur untuk identitas dan fraud.

Satu API untuk KYC, KYB, Transaction Monitoring, dan Wallet Screening. Integrasi dalam 5 menit.

Minta AI untuk merangkum halaman ini
Percobaan Ulang Andal untuk Panggilan API Idempoten Python.