2016-06-14 3 views
0

흡착판 펀치를 사용하여 대기열에 넣는 것과 관련하여 의심의 여지가 있습니다.흡착판 펀치를 사용하여 대기열에 넣기 작업

내 데이터베이스에 2000+ 검색 키워드가 있습니다. 내 데이터베이스에서 각 키워드에 대한 going 및 bing 순위를 알고 싶습니다. 이를 위해 Authority Labs API을 사용하고 있습니다. 그러나 AuthorityLabs는 1 시간 만에 1000 POST 요청을 처리합니다. 나는 흡입기 펀치를 사용하여 배경 작업으로 AuthorityLab에 각 요청을 보냈습니다. 1 시간 만에 1000 개의 작업 만 실행하도록 제한 할 수 있으며 나머지 작업은 1 시간 후에 만 ​​시작할 수 있습니다. 또한 순위 변경 분석을 위해 매일이 일을하고 싶습니다.

답변

0

속도 제한은 대기열 시스템의 문제가 아니며, 고급 지연/대기열 처리 기능을 처리하도록 설계되지 않은 SuckerPunch가 아닌 비동기 작업을 스레드 풀의 스레드로 이동시킵니다.

정말로 속도 제한이 필요하면 Sidekiq과 같은 실제 대기열 시스템을 사용하고 실제 코드를 입력하십시오.

Sidekiq 기업은 기본적으로이를 지원 : 특정 시간에 작업을 대기열에 의해, (그래서 선제 속도 제한) https://github.com/gevans/sidekiq-throttler

그러나 당신은 또한 단지 실행을 지연 할 수 있습니다 https://github.com/mperham/sidekiq/wiki/Ent-Rate-Limiting Sidekiq-throttler는 동일한 기능을 제공하는 것 (각각 4 분 후에 다른 것을 실행) 또는 자체 (다음 미해결 요청을 수행하는) 하나의 작업을 큐에 넣고 4 분 지연으로 다시 대기합니다.

언제나 오픈 소스와 마찬가지로 코드를 확인하고 직접 결정하십시오.

0

다음과 같이 할 수 있습니까? 사용자 정의 레이크 작업에 아마도

YourProcessingJob.set(wait: 1.hours).perform_later 

...