Как экспортировать все пользовательские данные Janrain с помощью API в Python

Я пытаюсь экспортировать всех пользователей, которые зарегистрировались на моем сайте с помощью Janrain в Python. Из документа Janrain это выглядит как entity.find - лучший вызов для получения данных. Поэтому я набираю следующий код:

get_user = api.call
                (
                "entity.find",
                type_name = "user",
                )

Однако код возвращает только 100 строк данных. Я знаю, что есть еще одно поле с именем max_results, но оно может занять не более 10000 записей.

Итак, как мне использовать API для экспорта всех моих пользовательских данных без ограничения строки?

Спасибо!

1 ответ

Вам придется экспортировать данные в пакетном режиме.

Как вы заметили, вызов entity.find принимает параметр max_results. Вы можете попытаться установить для этого параметра высокое значение, но в большинстве случаев число записей превысит пределы полезной нагрузки и / или ограничения времени ожидания API, и вызов API завершится ошибкой.

Janrain рекомендует выполнять пошаговое выполнение наборов значений с параметрами first_results и max_results, например, партиями по 1000:

first_result=0&max_results=1000
first_result=1000&max_results=1000
first_result=2000&max_results=1000

Эффективно извлекать большое количество объектов

Если вы извлекаете группы записей, возможно, кто-то еще удалит запись в одной из групп, которые вы уже извлекли. Поскольку entity.find считает каждую группу записей с начала списка, ваша следующая группа может пропустить запись, которая заполнила пространство удаленной записи. Чтобы избежать таких проблем, следуйте этим рекомендациям:

При сборе больших групп записей: Для n задано максимальное количество возвращаемых результатов (1000 - хорошее место для старта; 10000 - максимальное), а f, фильтр запросов на записи, использует параметры:

- sort_on=["id"]
- max_results=n

Затем:

1. Call entity.find with filter=f
2. Let x be the id of the last record in the result set
3. Call entity.find with filter=f and id > x
4. If the result set is not empty, go to step 2

Это приводит к быстрому поиску, без шансов пропустить какие-либо записи. Если вы не хотите использовать фильтр запроса, пропустите параметр фильтра в вызове на шаге 1 и используйте filter=id > x на шаге 3.

Примечание. Janrain также рекомендует избегать использования параметра "show_total_count" в большинстве случаев, так как это приводит к значительному снижению производительности. Кроме того, если система представляет собой действующую производственную систему с относительно большим количеством активных регистраций, общее число записей может отличаться в конце процесса экспорта по сравнению с начальным общим количеством.

Другие вопросы по тегам