2014-06-20 5 views
0

나는 기어맨 작업을 실행하고 그 자체로 더 많은 작업을 실행하여 더 많은 작업을 실행할 수 있습니다. 모든 중첩 된 작업이 완료되면 어떤 종류의 콜백을 원합니다. 나는 이것을 쉽게 할 수는 있지만, 구현은 내가하고 싶지 않은 작업자 (아이들이 완성 될 때까지 회전)를 묶을 것이다.중첩 된 작업이 포함 된 Gearman 콜백

해결 방법이 있습니까? Gearman AFAIK에는 "그룹"이라는 개념이 없으므로 그룹에 일자리를 추가 할 수없고 그룹이 완료되면 불이났습니다.

답변

1

Gearman에는이 문제를 처리 할 수있는 기능이 없습니다. 작업자를 묶고 싶지 않고 (작업자가 작업을 추가하고 작업 완료를 추적하게하려면) 대역 외 상태 추적을 수행해야합니다.

이 작업을 수행하는 방법은 memcached에 그룹 식별자를 유지하고 작업이 완료되면 완료된 하위 작업의 수를 증가시키고 동일한 그룹에 대해 새 작업을 추가 할 때 총 작업 수를 증가시키는 것입니다. 그런 다음 memcached를 폴링하여 현재 실행 상태 (작업이 완료되고 작업이 완료 됨)를 확인할 수 있습니다.

+0

이것은 대략 내가 끝내었던 것입니다. 잘 작동하지만 때때로 디버깅하기가 어렵습니다. –