تعزيز أداء Didit API باستخدام Python Asyncio (AR)
اكتشف كيف يمكن لـ Asyncio في بايثون أن يعزز بشكل كبير إنتاجية وكفاءة تطبيقاتك التي تستهلك واجهات برمجة تطبيقات التحقق من الهوية من Didit.

تحسين استهلاك API: تتيح مكتبة Python Asyncio عمليات الإدخال/الإخراج غير المحظورة، مما يحسن بشكل كبير كفاءة التطبيقات التي تجري العديد من استدعاءات API لخدمات مثل Didit للتحقق من الهوية.
إدارة تحديد المعدل: نفّذ استراتيجيات متطورة لتحديد المعدل باستخدام Asyncio للبقاء ضمن حدود Didit API، ومنع أخطاء 429 وضمان توفر الخدمة المستمر لسيناريوهات الإنتاجية العالية.
بناء حلول قابلة للتطوير: استفد من نموذج التزامن في Asyncio لتصميم أنظمة قوية وقابلة للتطوير قادرة على معالجة آلاف طلبات التحقق من الهوية في الثانية دون تكبد تكاليف بنية تحتية عالية.
ميزة Didit في واجهة برمجة التطبيقات أولاً: نهج Didit الذي يركز على المطورين، مع واجهات برمجة تطبيقات نظيفة وبيئة اختبار فورية، مناسب تمامًا للتكامل مع الأطر غير المتزامنة، مما يتيح سير عمل سلس وعالي الأداء للتحقق من الهوية من التحقق من الهوية إلى اكتشاف الحيوية.
الحاجة إلى السرعة: لماذا Asyncio لاستهلاك واجهة برمجة التطبيقات؟
في عالم اليوم الرقمي سريع الوتيرة، غالبًا ما تحتاج التطبيقات إلى إجراء العديد من استدعاءات واجهة برمجة التطبيقات الخارجية لأداء وظائفها. عندما تكون هذه الاستدعاءات محظورة، مما يعني أن التطبيق ينتظر كل استجابة قبل الانتقال إلى التالية، تظهر اختناقات الأداء بسرعة. هذا صحيح بشكل خاص لخدمات التحقق من الهوية، حيث قد يتضمن تدفق إعداد المستخدم الفردي تفاعلات متعددة لواجهة برمجة التطبيقات: التحقق من الهوية، وفحوصات الحيوية السلبية والنشطة، ومطابقة الوجه 1:1، وفحص مكافحة غسيل الأموال. بالنسبة للشركات ذات أحجام المستخدمين الكبيرة، يمكن أن تؤدي هذه العمليات المتسلسلة إلى تأخيرات كبيرة وتجارب مستخدم سيئة.
توفر مكتبة asyncio في بايثون إطار عمل قويًا لكتابة التعليمات البرمجية المتزامنة باستخدام بناء الجملة async/await. على عكس تعدد الخيوط التقليدي، الذي يمكن أن يسبب تعقيدات مثل قفل المترجم العام (GIL) للمهام التي تعتمد على وحدة المعالجة المركزية، تم تصميم asyncio لعمليات الإدخال/الإخراج. تعد استدعاءات واجهة برمجة التطبيقات بطبيعتها تعتمد على الإدخال/الإخراج (في انتظار استجابات الشبكة)، مما يجعل asyncio مرشحًا مثاليًا لتعزيز قدرة تطبيقك على استهلاك واجهات برمجة التطبيقات الخارجية بكفاءة. من خلال السماح لبرنامجك بأداء مهام أخرى أثناء انتظار استجابات واجهة برمجة التطبيقات، يمكن لـ asyncio زيادة الإنتاجية بشكل كبير دون الحاجة إلى إعادة كتابة كاملة لبنية تطبيقك في نظام موزع.
فهم بيئة Didit API وحدود المعدل
تقدم Didit، كمنصة هوية أصلية بالذكاء الاصطناعي، مجموعة شاملة من واجهات برمجة التطبيقات للتحقق من الهوية، بما في ذلك التحقق من الهوية (OCR، MRZ، الباركود)، والحيوية السلبية والنشطة، ومطابقة الوجه 1:1، وفحص ومراقبة مكافحة غسيل الأموال، والمزيد. تم تصميم واجهة برمجة التطبيقات الخاصة بنا لتحقيق أداء عالٍ وموثوقية، ولكن مثل جميع واجهات برمجة التطبيقات القوية، فإنها تستخدم تحديد المعدل لضمان الاستقرار والاستخدام العادل عبر جميع العملاء. يعد فهم هذه الحدود أمرًا بالغ الأهمية لأي مستهلك ذي إنتاجية عالية.
تفرض Didit حدود معدل عالمية ومحددة للنقاط النهائية. على سبيل المثال، تبلغ الحدود العالمية عادة 300 طلب في الدقيقة لكل تطبيق لكل من نقاط نهاية GET والكتابة/الحذف. تنطبق قيود أكثر صرامة على العمليات عالية التأثير، مثل 600 RPM لـ POST /v2/session/ (لإنشاء سير عمل التحقق) و 100 RPM لـ GET /v2/session/<id>/decision/ (لاسترداد قرارات الجلسة). عند تجاوز هذه الحدود، تُرجع واجهة برمجة التطبيقات رمز حالة 429 Too Many Requests، إلى جانب رؤوس مفيدة مثل X-RateLimit-Limit، X-RateLimit-Remaining، و Retry-After (ثواني الحقبة) لتوجيه استراتيجية التراجع الخاصة بك.
يتيح لك تنفيذ asyncio إدارة حدود المعدل هذه بشكل أكثر فعالية. بدلاً من خيط حظر واحد يصل إلى الحد الأقصى، يمكن لتطبيق غير متزامن أن يضع الطلبات في قائمة الانتظار بذكاء، وينفذ تراجعًا أسيًا، ويعيد محاولة الاستدعاءات الفاشلة دون حظر تدفق التطبيق بأكمله. ينتج عن ذلك استهلاك أكثر سلاسة لواجهة برمجة التطبيقات وعدد أقل من الانقطاعات، مما يضمن بقاء عمليات التحقق من الهوية الخاصة بك دون انقطاع حتى خلال فترات الذروة.
تنفيذ Asyncio لاستدعاءات Didit API المتزامنة
يتضمن دمج asyncio مع واجهات برمجة تطبيقات Didit استخدام عميل HTTP غير متزامن مثل aiohttp. فيما يلي مخطط مفاهيمي لكيفية تنظيم استدعاءات واجهة برمجة التطبيقات غير المتزامنة:
import asyncio
import aiohttp
import time
API_KEY = "YOUR_DIDIT_API_KEY"
BASE_URL = "https://verification.didit.me/v3/"
async def call_didit_api(session, endpoint, payload=None, method='POST'):
headers = {
'accept': 'application/json',
'x-api-key': API_KEY
}
if method == 'POST':
headers['content-type'] = 'application/json'
url = f"{BASE_URL}{endpoint}"
async with session.request(method, url, json=payload, headers=headers) as response:
if response.status == 429:
retry_after = int(response.headers.get('Retry-After', '5'))
print(f"Rate limit hit. Retrying after {retry_after} seconds...")
await asyncio.sleep(retry_after) # Implement simple backoff
return await call_didit_api(session, endpoint, payload, method) # Retry
response.raise_for_status()
return await response.json()
async def create_verification_session(session, workflow_id, user_id):
endpoint = "session/"
payload = {
"workflow_id": workflow_id,
"vendor_data": user_id,
"callback": "https://your-app.com/didit-callback"
}
return await call_didit_api(session, endpoint, payload, method='POST')
async def get_session_decision(session, session_id):
endpoint = f"session/{session_id}/decision/"
return await call_didit_api(session, endpoint, method='GET')
async def main():
async with aiohttp.ClientSession() as session:
tasks = []
# Example: Create 10 verification sessions concurrently
for i in range(10):
tasks.append(create_verification_session(session, "YOUR_WORKFLOW_ID", f"user_{i}"))
results = await asyncio.gather(*tasks)
for res in results:
print(f"Created session: {res.get('session_id')}")
# Example: Retrieve decisions for some sessions concurrently
decision_tasks = []
for res in results[:5]: # Take first 5 for decision retrieval
session_id = res.get('session_id')
if session_id:
decision_tasks.append(get_session_decision(session, session_id))
decision_results = await asyncio.gather(*decision_tasks)
for decision in decision_results:
print(f"Session decision: {decision}")
if __name__ == "__main__":
asyncio.run(main())
يوضح هذا المثال كيفية إنشاء جلسات تحقق متعددة واسترداد قراراتها في وقت واحد. تتضمن الدالة call_didit_api آلية إعادة محاولة أساسية لـ 429 Too Many Requests، باستخدام رأس Retry-After لتنفيذ تراجع أسي. بالنسبة لأنظمة الإنتاج، يوصى بنمط تراجع وقاطع دائرة أكثر تطورًا، ولكن هذا يوضح المبدأ الأساسي.
باستخدام asyncio.gather، يمكنك بدء طلبات API متعددة في وقت واحد، مما يسمح لتطبيقك بمعالجة مهام أخرى أو انتظار الاستجابات في وقت واحد، مما يؤدي إلى مكاسب كبيرة في الأداء مقارنة بالاستدعاءات المتسلسلة المحظورة.
استراتيجيات التحقق من الهوية عالية الحجم
يتطلب تحقيق إنتاجية عالية باستخدام Didit APIs باستخدام Asyncio أكثر من مجرد تقديم الطلبات في وقت واحد. ضع في اعتبارك هذه الاستراتيجيات:
- التجميع الذكي: بينما يكون التحقق الأساسي من Didit غالبًا ما يبدأه المستخدم، بالنسبة لعمليات مثل مراقبة مكافحة غسيل الأموال أو عمليات البحث عن بيانات معينة، قد تصمم سير عمل يسمح بالمعالجة المجمعة عند الاقتضاء، مما يقلل العدد الإجمالي لاستدعاءات واجهة برمجة التطبيقات.
- تحديد المعدل التكيفي: بالإضافة إلى التراجع الأسي البسيط، نفّذ محدد معدل تكيفي يراقب
X-RateLimit-Remainingويضبط مستوى التزامن لمهامasyncioالخاصة بك ديناميكيًا. إذا كانت المكالمات المتبقية منخفضة، أبطئ؛ إذا كانت عالية، سرّع. - التحديثات المستندة إلى الويب هوك: للحصول على نتائج الجلسة (على سبيل المثال، بعد التحقق من الهوية أو فحوصات الحيوية)، اعتمد على الويب هوكس الخاصة بـ Didit بدلاً من الاستقصاء المفرط. هذا يقلل من عدد طلبات GET إلى
/v2/session/<id>/decision/، والتي لديها حد معدل أكثر صرامة يبلغ 100 RPM. تعني بنية Didit المعيارية أنه يمكنك إعداد إشعارات الويب هوك لتغييرات الحالة المختلفة، ودفع التحديثات في الوقت الفعلي إلى نظامك دون استعلام مستمر. - معالجة الأخطاء وإمكانية المراقبة: نفّذ معالجة قوية للأخطاء لمشكلات الشبكة، وأخطاء واجهة برمجة التطبيقات (بخلاف 429s)، والمهل الزمنية. سجل أو نبه عند تشغيل عمليات إعادة المحاولة أو تجاوز حدود المعدل باستمرار. يوفر هذا رؤى حاسمة لتحسين استراتيجية استهلاك واجهة برمجة التطبيقات الخاصة بك.
- إدارة الموارد: أدر مثيلات
aiohttp.ClientSessionالخاصة بك بعناية. إنشاء جلسة جديدة لكل طلب غير فعال بسبب النفقات العامة للاتصال. إعادة استخدام جلسة واحدة لطلبات متعددة هي أفضل ممارسة بشكل عام.
كيف تساعد Didit
تم بناء Didit من الألف إلى الياء للمطورين والتطبيقات عالية الأداء، مما يجعلها الشريك المثالي لتطبيقات Python Asyncio. تتيح لك بنيتنا المعيارية توصيل وفحص الهوية مثل التحقق من الهوية، والحيوية السلبية والنشطة، ومطابقة الوجه 1:1، وفحص مكافحة غسيل الأموال حسب الحاجة، كل منها يمكن الوصول إليه عبر واجهات برمجة تطبيقات نظيفة وموثقة جيدًا. تعني هذه الوحدة أنه يمكنك تنظيم سير عمل تحقق معقدة مصممة خصيصًا لاحتياجاتك الخاصة، ثم تحسين استهلاكها باستخدام التقنيات غير المتزامنة.
نحن نؤمن بجعل التحقق من الهوية متاحًا، ولهذا السبب نقدم خدمة KYC الأساسية المجانية. يتيح لك هذا التجربة وبناء تكاملاتك غير المتزامنة دون تكاليف أولية. يضمن نهجنا الأصلي بالذكاء الاصطناعي أن تكون خدمات التحقق لدينا سريعة ودقيقة، مما يكمل تمامًا فوائد السرعة لـ Asyncio. بدون رسوم إعداد ونموذج الدفع لكل فحص ناجح، توفر Didit حلاً فعالاً من حيث التكلفة وقابلاً للتطوير للشركات التي تتطلع إلى تنفيذ التحقق من الهوية عالي الإنتاجية. بيئة الاختبار الفورية الخاصة بنا ووثائق API الشاملة تمكن المطورين بشكل أكبر من دمج وتحسين استخدامهم لخدمات Didit بسرعة، سواء كنت تبني نظامًا جديدًا أو تعزز نظامًا موجودًا.
هل أنت مستعد للبدء؟
هل أنت مستعد لرؤية Didit في العمل؟ احصل على عرض توضيحي مجاني اليوم.
ابدأ في التحقق من الهويات مجانًا باستخدام الطبقة المجانية من Didit.