0
한 번에 beanstalkd 큐에서 여러 작업을 예약 할 수있는 방법이 있습니까?beanstalkd 큐에서 여러 작업 예약하기
쿼리 당 최대 10 개의 결과를 반환 할 수있는 외부 API를 요청하고 있습니다. 그들은 매일 할 수있는 요청의 수를 제한합니다. 따라서 요청 당 더 많은 결과가 나옵니다.
이 해결 방법을 사용하고 있으므로 설명서에서이 기능에 대한 언급을 찾을 수 없습니다. 누구든지 이것을 성취 할 수있는 더 좋은 방법을 알고 있습니까? 또는 아마도 beanstalkd보다 직업에 더 적합한 도구일까요?
loop do
sleep(0.3)
while @beanstalk.tubes[example].peek(:ready)
jobs = []
catch(:done) do
10.times do |i|
if @beanstalk.tubes[example].peek(:ready) then
job = @beanstalk.tubes[example].reserve(0)
jobs << job.body
job.delete
else
throw(:done)
end
end
end
process(jobs)
end
end
지금은 전에 PHP에서 비슷한 짓을했는지. 'reserve()'의 결과를 배열에 저장하고 모든 en-mass를 처리 한 다음 작업을 삭제합니다 (또는 성공한 작업 만 삭제할 수도 있음). 물론 KR은 Beanstalkd에 대한 진정한 전문가입니다. –
신난다, 그 트릭을 않습니다. 도와 주셔서 감사합니다! – persnickety
안녕하세요,이 답변을 편집하여 통화 중 대기 루프를 제거하고 첫 번째 작업에서 무기한 시간 초과로 교체하십시오. 미안해 처음으로 그걸 놓쳤다. 이 버전은보다 신속하게 작업을 처리하고 작업자 CPU를 낭비하지 않습니다. –