2016-07-19 1 views
1

내 웹 사이트에 Janrain과 함께 Python으로 등록한 모든 사용자를 내보내려고합니다. Janrain 문서에서 entity.find가 데이터를 가져 오기위한 최상의 호출 인 것처럼 보입니다. 그래서 나는 다음과 같은 코드를 입력 :Python에서 API를 사용하여 모든 사용자 데이터를 내보내는 방법

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

그러나 코드는 데이터의 100 개 행을 반환합니다. max_results라는 또 다른 필드가 있다는 것을 알고 있지만 최대 10000 개의 레코드를 가져갈 수 있습니다.

그렇다면 행 제한없이 모든 사용자 데이터를 내보내려면 API를 어떻게 사용해야합니까?

감사합니다.

답변

0

데이터를 일괄 적으로 내 보내야합니다.

언급 한대로 entity.find 호출은 max_results 매개 변수를 사용합니다. 값을 높게 설정하려고 할 수 있지만 대부분의 경우 레코드 수가 페이로드 제한 및/또는 API 제한 시간 제한을 초과하여 API 호출이 실패합니다.

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

이 엔티티 효율적으로

당신이 검색하는 경우 많은 수의 그룹을 검색합니다

Janrain 1000의 배치로, 예를 들어, first_results 및 MAX_RESULTS 매개 변수 값 세트를 단계별로 권장 다른 사람이 이미 검색 한 그룹 중 하나에서 레코드를 삭제할 수도 있습니다. entity.find는 목록의 처음부터 각 레코드 그룹을 계산하므로 다음 그룹은 삭제 된 레코드의 공간에 채워진 레코드를 놓칠 수 있습니다. 다음과 같은 최적의 방법을 따르는 이러한 문제를 방지하려면 :

기록의 큰 그룹 수집하는 경우 : 감안할 때 n을 반환 할 최대 결과 수를 (1000 시작하기에 좋은 장소입니다 10000가 최대입니다), 그리고 어떤 기록을 누락없이 기회,

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 

이 빠른 검색 결과 : 그런 다음

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

: F, 레코드 쿼리 필터는 매개 변수를 사용합니다. 쿼리 필터를 사용하지 않으려면 1 단계에서 호출 한 필터 매개 변수를 생략하고 3 단계에서 filter = id> x를 사용하십시오.

참고 : Janrain은 "show_total_count" 매개 변수는 대부분의 유스 케이스에서 상당한 성능 저하를 가져옵니다. 또한 시스템이 활성 등록 수가 상대적으로 많은 실제 프로덕션 시스템 인 경우 내보내기 프로세스가 끝날 때 총 레코드 수는 시작 합계와 비교할 때 다를 수 있습니다.

+0

고맙습니다. 나는 그걸 작동시킬 수있어! –

관련 문제