0

제공하는 REST API를 사용하여 사이트에서 많은 양의 정보를 지속적으로 크롤링하려고합니다. 나는 속도 제한을 유지하기 위해 API 호출을 예약하거나 대기시킬 수 있습니까?

  • 각 호출이 될 것입니다 (정확히 5 초당 통화, 분당 5 * 60 전화를 걸) 전체 한도를 활용 constraints-

    1. API의 한계 내에서 스테이 (5 호출/초)
    2. 다음 한 다른 매개 변수
    3. 통화 AWS EC2 (또는 GAE)로부터 제조한다 (PARAMS는 DB 또는 메모리 캐시 페치한다)과, 처리 된 데이터는 지금 AWS RDS/DynamoDB의

    저장한다 I 그냥 r에 예약 된 작업을 사용하고 있습니다. 파이썬 스크립트를 매분마다 풀어 내지 마라. 그러면 스크립트는 10-20 api 호출을 만든다. -> response response-> 데이터를 DB에 저장한다. 나는이 절차를 확장 (분당 5 * 60 = 300 통화)하고 코드를 통해 관리 할 수있게하고 싶다. (새로운 작업 추진, 일시 중지/재개, 실패 감시, 통화 빈도 변경)

    내 질문은 - 이것을 달성하는 데 가장 유용한 도구는 무엇입니까? 모든 제안/안내/링크를 부탁드립니다.

    Celery/RabbitMQ/Redis와 같은 일부 작업 대기열 프레임 워크의 이름을 알고 있지만 그 항목에 대해서는 잘 모릅니다. 그러나 이것이 내 문제를 해결하는 데 가장 좋은 도구 인 경우 그 중 하나 또는 각각을 배우고 싶어합니다. ☺
    점프하기 전에 참전 용사들로부터 소식을 듣고 싶습니다. 사용하려는 다른 AWS 서비스가 있으면 알려주십시오. (SQS 또는 AWS Data Pipeline?)을 사용하여보다 쉽게 ​​단계를 수행 할 수 있습니다.

  • 답변

    1

    유스 케이스가 다소 단순하기 때문에 속도 제한을 위해 외부 종속성을 추가 할 필요가 없습니다. 나는 두 가지 옵션의

    을 생각할 수 있습니다 :

    • (즉, 현재 매 분마다 깨어나서 10 ~ 20 API의 호출을) 5 호출 (순차적으로 또는 병렬)를 매 초마다 일어나 만들기 위해 스크립트를 수정 .
      • 현재 디자인에서 API 호출이 1 분에 걸쳐 제대로 분산되지 않을 수 있습니다. 예를 들어 20 초 동안 모든 10-20 개의 호출이 이루어질 수 있습니다.
      • 스크립트를 1 초마다 실행하도록 변경하면 API 호출 속도가 더 균형을 이룰 것입니다.
    • 파이썬 스크립트를 장기 실행 데몬으로 변경하고 this과 같은 속도 제한 기 라이브러리를 사용하십시오. 1 초에 1 번 통화하도록 후자를 구성 할 수 있습니다.
    관련 문제