A high-level Python SDK for Bitrix24 REST API aiming for speed of high volume transactions. Async operations, automatic batching and traffic throttling to prevent server rejections.
Project description
fast-bitrix24
Высокоуровневый API для Python 3.7+ для быстрого получения данных от Битрикс24 через REST API.
Основная функциональность
Удобство кода
- Высокоуровневые списочные методы для сокращения количества необходимого кода. Большинство операций занимают только одну строку кода.
- Позволяет задавать параметры запроса именно в таком виде, как они приведены в документации к Bitrix24 REST API.
- Выполнение запросов автоматически сопровождается прогресс-баром из пакета
tqdm
, иллюстрирующим не только количество обработанных элементов, но и прошедшее и оставшееся время выполнения запроса.
Высокая скорость обмена данными
- На больших списках скорость обмена данными с сервером достигает тысяч элементов в секунду.
- Использование асинхронных запросов через
asyncio
иaiohttp
позволяет экономить время, делая несколько запросов к серверу параллельно. - Автоматическая упаковка запросов в батчи сокращает количество требуемых запросов к серверу и ускоряет обмен данными.
Избежание отказов сервера
- Скорость отправки запросов к серверу Битрикс контролируется для избежания ошибки HTTP
503 Service unanavilable
- Размера батча контролируется для избежания ошибки HTTP
414 URI too long
Начало
Установите модуль через pip
:
pip install fast_bitrix24
Далее в python:
from fast_bitrix24 import Bitrix
# замените на ваш вебхук для доступа к Bitrix24
webhook = "https://your_domain.bitrix24.ru/rest/1/your_code/"
b = Bitrix(webhook)
Методы полученного объекта b
в дальнейшем используются для взаимодействия с сервером Битрикс24.
Использование
get_all()
Чтобы получить полностью список сущностей, используйте метод get_all()
:
# список пользователей
users = b.get_all('user.get')
Метод get_all()
возвращает список, где каждый элемент списка является словарем, описывающим одну сущность из запрощенного списка.
Вы также можете использовать параметр details
, чтобы кастомизировать запрос:
# список сделок в работе, включая пользовательские поля
deals = b.get_all('crm.deal.get', details={
'select': ['*', 'UF_*'],
'filter': ['CLOSED': 'N']
})
get_by_ID()
Если у вас есть список ID сущностей, то вы можете получить их при помощи метода get_by_ID()
:
'''
получим список всех контактов, привзяанных к сдлекам, в виде
[
(ID сделки1, [контакт1, контакт2, ...]),
(ID сделки2, [контакт1, контакт2, ...]),
...
]
'''
contacts = b.get_by_ID('crm.deal.contact.item.get',
[d['ID'] for d in deals])
Метод get_by_ID()
возвращает список кортежей вида (ID, result)
, где result
- ответ сервера относительно этого ID
.
post()
Чтобы создавать, изменять или удалять сущности, используйте метод post()
:
# вставим в начало названия сделки ее ID
tasks = [
{
'ID': d['ID'],
'NAME': f'{d["ID"]}: {d["name"]}'
}
for d in deals
]
b.post('crm.deal.update', tasks)
Метод post()
возвращает список ответов сервера по каждому элементу переданного списка.
Как связаться с автором
- e-mail: leshchenko@gmail.com
- telegram: https://t.me/@leshchenko1979
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 Distributions
Built Distribution
Hashes for fast_bitrix24-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37a9de2a1f1e386551b49fb882a483d120fa2244a6b92b48db8934714c967372 |
|
MD5 | fe92b05653b6661de218cf25b0745c4b |
|
BLAKE2b-256 | cf98e84fffd82abc65911fe80f83571952da25cef4c55328b320b6b6278af195 |