Library for working with the Bitrix24 API (supports both synchronous and asynchronous clients).
Project description
Bitrix24 API Client
Библиотека для взаимодействия с Bitrix24 REST API, поддерживающая как синхронный, так и асинхронный режим работы.
🔧 Возможности
- Синхронный клиент (
requests) - Асинхронный клиент (
httpx) - Поддержка стратегий повторов:
fixed,linear,exponential,logarithmic,exponential_jitter - Поддержка постраничной загрузки (
fetch_all=True) - Обработка ошибок API и HTTP
- Менеджер контекста и сессий
💻 Установка
pip install bitrix24-api-client
🚀 Быстрый старт
from bitrix24_client import Bitrix24Client
with Bitrix24Client(
base_url="https://yourdomain.bitrix24.ru",
access_token="your_webhook_or_token"
) as client:
result = client.call_method("crm.lead.list", {"select": ["ID", "TITLE"]}, fetch_all=True)
print(result)
import asyncio
from typing import List
from src.bitrix24_client import AsyncBitrix24Client
from src.bitrix24_client import chunk_batch_requests
async def run_batch_example():
client = AsyncBitrix24Client(
base_url="https://example.bitrix24.ru",
access_token="token",
max_concurrent_requests=35,
user_id=1
)
await client.open_session()
lead_ids: List[dict] = await client.call_method(
'crm.lead.list',
params={
'select': ['ID']
},
fetch_all=True
)
commands = {
f"get_lead_{lead_id['ID']}": f"crm.lead.get?id={lead_id['ID']}"
for lead_id in lead_ids
}
chunks = chunk_batch_requests(commands)
get_lead_tasks = [
asyncio.create_task(client.call_method(
'batch',
params={"halt": 1, "cmd": chunk}
)) for chunk in chunks
]
results = await asyncio.gather(*get_lead_tasks)
await client.close_session()
if __name__ == "__main__":
asyncio.run(run_batch_example())
🔁 Стратегии повторных попыток
Поддерживаемые стратегии:
fixed— фиксированная задержкаlinear— линейный ростlogarithmic— логарифмический ростexponential— экспоненциальный ростexponential_jitter— экспоненциальный с джиттером (случайная задержка)
Пример:
client = Bitrix24Client(
base_url="https://yourdomain.bitrix24.ru",
access_token="your_webhook_or_token",
retry_strategy="exponential_jitter"
)
⚙️ Аргументы конструктора
| Параметр | Описание |
|---|---|
base_url |
URL портала Bitrix24 |
access_token |
Токен или Webhook ключ |
user_id |
ID пользователя |
timeout |
Таймаут запроса |
rate_limit_pause |
Базовая задержка перед повтором |
max_retries |
Максимальное количество повторов |
max_delay |
Максимальная задержка между повторами |
retry_strategy |
Стратегия повтора (см. выше) |
🤝 Участие
Если вы нашли ошибку, хотите предложить улучшение или добавить функциональность — буду рад вашей помощи. Можно создать issue или отправить pull request.
Любой вклад приветствуется: от кода и документации до примеров использования.
📄 Лицензия
Проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bitrix24_api_client-0.1.1.tar.gz.
File metadata
- Download URL: bitrix24_api_client-0.1.1.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c947466a5d7c5fc1ec17ff1a209a51f4488d249fe27588f6fc088b26f95a361f
|
|
| MD5 |
0ab2c6fadfa3acd0f5737d296406903f
|
|
| BLAKE2b-256 |
d1fa6544e58366325189a92b9f0111f14e2c9c9ce65b6b25e6db173cf98b756b
|
File details
Details for the file bitrix24_api_client-0.1.1-py3-none-any.whl.
File metadata
- Download URL: bitrix24_api_client-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
257c1fae297b8f17f129273cb3f085a52c109ded081814c2a92df4e758ecd474
|
|
| MD5 |
13138e9ef76d22da2ac3f3cce872f676
|
|
| BLAKE2b-256 |
e26875cf5da385a0f0b928cd572bb2c47c50f53bed8744d956d848d9713fb189
|