7

페이스 북 그래프 API를 많이 사용하는 앱을 만들고 있습니다. 600 초마다 600 회의 요청이 처리된다는 것을 알았습니다.페이 스북 (Facebook) API에 분노하지 않도록 지연된 작업을 조절하는 방법

지연된 작업을 모든 백그라운드 처리에 사용하고 있습니다. 지연된 작업을 fb api rate limit 미만으로 유지하도록 예약하는 좋은 방법은 무엇입니까? 작업이 지연되는 트릭이 있습니까? 아니면 속도 제한을 초과하지 않기 위해 별도의 백그라운드 작업 프로세서를 구축해야합니까?

감사

+0

답변으로 질문을 해결 한 경우 답변 옆에있는 체크 표시를 선택하여 "수락"하는 것을 기억하십시오. –

+0

"페이스 북 그래프 API를 많이 사용하는 앱을 만들고 있습니다. 600 초마다 600 회의 요청을 보낼 수 있습니다." 이 정보를 어디에서 얻었으며 얼마나 신뢰할 수 있습니까? 많은 감사, Wes –

답변

2

600 요청마다 600 초 평균에 초당 1입니다.

매우 빠르지 않습니다!

1) 회사의 크기와 무게에 따라 제한을받을 수 있는지 확인하기 위해 FB로 조사합니다.

2) DelayedJob으로 고정 할 수 있으므로 휠을 다시 발명 할 필요가 없습니다. 스케줄러 만 변경하면됩니다.

내 DelayedJob 설치시 "run_at"열을 사용하여 작업을 다시 시도하는 시간을 설정하는 것 이상을 사용합니다. 또한 작업을 처음 실행하는 데 시간으로 사용합니다. 또한 그것을 사용하여 작업을 조절할 수 있습니다.

당신의 목표에 대한
# added run_at param 
# eg Delayed::Job.enqueue NewsletterJob.new('lorem ipsum...'), 0, 
#       Delayed::Job.db_time_now + 15.minutes 
def self.enqueue(object, priority = 0, run_at = nil) 
    unless object.respond_to?(:perform) 
    raise ArgumentError, 'Cannot enqueue items which do not respond to perform' 
    end 

    Job.create(:payload_object => object, :priority => priority, 
    :run_at => run_at)  
end      

, 나는 FB API 호출이 큐에 마지막 시간을 추적하고, 시간을 run_at하기 위해 다음 중 하나를 예약 할 것 :

는 DelayedJob 파일 job.rb에 변경 적어도 1 초 이상.

이점 : FB API 호출과 함께 FB 이외의 다른 작업을 인터리브 할 수 있습니다.

2

뻔뻔한 플러그이지만 약간은 Ruby 앱용 클라우드 기반 백그라운드 처리/작업자 큐 인 SimpleWorker를 사용해 볼 수 있습니다. 필요할 때 하나 이상의 작업이 대기열에서 나오고 FB API를 누르도록 예약 할 수 있습니다. 모든 스케줄링 및 큐 관리는 SimpleWorker에서 처리하며 클라우드에서도 처리가 이루어집니다.

이 유형의 용도로만 제작되었습니다.

FB (Appoxy는 제작자 및 관리자)와 함께 작업하기 위해 mini_fb 보석을 확인하십시오.

도움이 필요하면 저희에게 알려주십시오.

Ken @ SimpleWorker

관련 문제