Увеличение пропускной способности Didit API с помощью Python Asyncio (RU)
Узнайте, как Python Asyncio может значительно повысить пропускную способность и эффективность ваших приложений, использующих API верификации личности Didit.

Оптимизация потребления API: Python Asyncio обеспечивает неблокирующие операции ввода-вывода, значительно повышая эффективность приложений, совершающих многочисленные вызовы API к таким сервисам, как Didit, для верификации личности.
Управление ограничениями скорости: Внедряйте сложные стратегии ограничения скорости с помощью Asyncio, чтобы оставаться в пределах лимитов API Didit, предотвращая ошибки 429 и обеспечивая непрерывную доступность сервиса для сценариев с высокой пропускной способностью.
Создание масштабируемых решений: Используйте модель параллелизма Asyncio для разработки надежных и масштабируемых систем, способных обрабатывать тысячи запросов на верификацию личности в секунду без значительных затрат на инфраструктуру.
Преимущество API-First подхода Didit: Подход Didit, ориентированный на разработчиков, с чистыми API и мгновенной "песочницей", идеально подходит для интеграции с асинхронными фреймворками, обеспечивая бесперебойные, высокопроизводительные рабочие процессы верификации личности от проверки ID до обнаружения активности.
Потребность в скорости: почему Asyncio для потребления API?
В современном быстро меняющемся цифровом мире приложениям часто приходится выполнять многочисленные внешние вызовы API для выполнения своих функций. Когда эти вызовы являются блокирующими, то есть приложение ждет каждого ответа, прежде чем перейти к следующему, быстро возникают узкие места в производительности. Это особенно актуально для сервисов верификации личности, где один процесс регистрации пользователя может включать несколько взаимодействий с API: верификация ID, пассивные и активные проверки активности, сопоставление лиц 1:1 и проверка AML. Для компаний с большим объемом пользователей эти последовательные операции могут привести к значительным задержкам и ухудшению пользовательского опыта.
Библиотека Python asyncio предоставляет надежную основу для написания конкурентного кода с использованием синтаксиса async/await. В отличие от традиционной многопоточности, которая может вносить сложности, такие как Global Interpreter Lock (GIL) для задач, связанных с ЦП, asyncio разработан для операций, связанных с вводом-выводом. Вызовы API по своей природе связаны с вводом-выводом (ожидание сетевых ответов), что делает asyncio идеальным кандидатом для значительного увеличения способности вашего приложения эффективно потреблять внешние API. Позволяя вашей программе выполнять другие задачи во время ожидания ответов API, asyncio может значительно увеличить пропускную способность без необходимости полной переработки архитектуры вашего приложения в распределенную систему.
Понимание ландшафта API и ограничений скорости Didit
Didit, как AI-нативная платформа идентификации, предлагает полный набор API для верификации личности, включая верификацию ID (OCR, MRZ, штрих-коды), пассивную и активную проверку активности, сопоставление лиц 1:1, проверку и мониторинг AML и многое другое. Наш API разработан для высокой производительности и надежности, но, как и все надежные API, он использует ограничение скорости для обеспечения стабильности и справедливого использования всеми клиентами. Понимание этих ограничений имеет решающее значение для любого потребителя с высокой пропускной способностью.
Didit применяет как глобальные, так и специфичные для конечных точек ограничения скорости. Например, глобальные лимиты обычно составляют 300 запросов в минуту на приложение как для конечных точек GET, так и для конечных точек Write/Delete. Более строгие ограничения применяются к высоконагруженным операциям, таким как 600 RPM для POST /v2/session/ (для создания рабочих процессов верификации) и 100 RPM для GET /v2/session/<id>/decision/ (для получения решений по сессии). При превышении этих лимитов API возвращает код состояния 429 Too Many Requests, а также полезные заголовки, такие как X-RateLimit-Limit, X-RateLimit-Remaining и Retry-After (секунды эпохи), чтобы помочь вам в стратегии отсрочки.
Реализация asyncio позволяет гораздо эффективнее управлять этими ограничениями скорости. Вместо одного блокирующего потока, достигающего лимита, асинхронное приложение может интеллектуально ставить запросы в очередь, реализовать экспоненциальную отсрочку и повторять неудачные вызовы, не блокируя весь поток приложения. Это приводит к более плавному потреблению API и меньшему количеству прерываний, гарантируя, что ваши процессы верификации личности остаются бесперебойными даже в часы пик.
Реализация Asyncio для параллельных вызовов Didit API
Интеграция asyncio с API Didit включает использование асинхронного HTTP-клиента, такого как aiohttp. Вот концептуальный план того, как вы можете структурировать свои асинхронные вызовы API:
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 одновременно, позволяя вашему приложению обрабатывать другие задачи или ожидать ответов параллельно, что приводит к значительному увеличению производительности по сравнению с последовательными блокирующими вызовами.
Стратегии для высокообъемной верификации личности
Достижение высокой пропускной способности с API Didit с использованием Asyncio требует больше, чем просто параллельное выполнение запросов. Рассмотрите следующие стратегии:
- Умная пакетная обработка: Хотя основная верификация Didit часто инициируется пользователем, для таких операций, как мониторинг AML или определенные поиски данных, вы можете разработать рабочие процессы, которые позволяют пакетную обработку, когда это применимо, уменьшая общее количество вызовов API.
- Адаптивное ограничение скорости: Помимо простой экспоненциальной отсрочки, реализуйте адаптивное ограничение скорости, которое отслеживает
X-RateLimit-Remainingи динамически регулирует уровень параллелизма ваших задачasyncio. Если оставшихся вызовов мало, замедлитесь; если их много, ускорьтесь. - Обновления через веб-хуки: Для результатов сессий (например, после верификации ID или проверки активности) полагайтесь на веб-хуки Didit, а не на чрезмерный опрос. Это уменьшает количество запросов GET к
/v2/session/<id>/decision/, который имеет более строгое ограничение скорости в 100 RPM. Модульная архитектура Didit означает, что вы можете настроить уведомления веб-хуков для различных изменений статуса, отправляя обновления в реальном времени в вашу систему без постоянных запросов. - Обработка ошибок и наблюдаемость: Внедрите надежную обработку ошибок для проблем с сетью, ошибок API (помимо 429) и тайм-аутов. Регистрируйте или оповещайте, когда срабатывают повторные попытки или постоянно достигаются ограничения скорости. Это дает важную информацию для оптимизации вашей стратегии потребления API.
- Управление ресурсами: Тщательно управляйте экземплярами
aiohttp.ClientSession. Создание новой сессии для каждого запроса неэффективно из-за накладных расходов на соединение. Повторное использование одной сессии для нескольких запросов, как правило, является лучшей практикой.
Как помогает Didit
Didit создан с нуля для разработчиков и высокопроизводительных приложений, что делает его идеальным партнером для реализаций Python Asyncio. Наша модульная архитектура позволяет вам подключать и использовать проверки личности, такие как верификация ID, пассивная и активная проверка активности, сопоставление лиц 1:1 и проверка AML по мере необходимости, каждая из которых доступна через чистые, хорошо документированные API. Эта модульность означает, что вы можете организовывать сложные рабочие процессы верификации, настроенные под ваши конкретные нужды, а затем оптимизировать их потребление с использованием асинхронных методов.
Мы верим в то, что верификация личности должна быть доступной, поэтому мы предлагаем бесплатный базовый KYC. Это позволяет вам экспериментировать и создавать свои асинхронные интеграции без предварительных затрат. Наш AI-нативный подход гарантирует, что наши услуги верификации являются быстрыми и точными, идеально дополняя преимущества скорости Asyncio. Без платы за установку и с моделью оплаты за успешную проверку Didit предоставляет экономичное и масштабируемое решение для компаний, стремящихся реализовать высокопроизводительную верификацию личности. Наша мгновенная "песочница" и подробная документация по API дополнительно расширяют возможности разработчиков для быстрой интеграции и оптимизации использования услуг Didit, независимо от того, создаете ли вы новую систему или улучшаете существующую.
Готовы начать?
Готовы увидеть Didit в действии? Получите бесплатную демонстрацию сегодня.
Начните бесплатно верифицировать личности с бесплатным уровнем Didit.