2012-07-27 2 views
1

최근 지연된 작업의 일정을 다시 잡을 때 작업이 똑같은 두 가지 이상의 작업으로 나타납니다. 나는 4 개의 똑같은 작업으로 태어난 직업이있다.Google App Engine이 대기열에 지연된 작업을 추가하면 여러 작업이 발생합니다.

Queue q = null; 
if (queueName == null) 
    q = QueueFactory.getDefaultQueue(); 
else 
    q = QueueFactory.getQueue(queueName); 

TaskOptions to = TaskOptions.Builder.withPayload(this); 
q.add(to); 

이 코드는 매우 간단하지만 응용 프로그램에서 많은 문제를 일으 킵니다.

to.taskName(TASK_NAME); 

은 아무 소용와 산란 중복 작업을 방지하기 위해 : 우리는 심지어 같은 작업에 이름을주고 노력했다. 다른 사람이이 문제를 보았거나 중복을 막을 수있는 해결책이 있습니까?

+1

지연된 작업을 왜 다시 계획하고 있습니까? 태스크 핸들러에서이를 수행하는 경우 동일한 태스크가 두 번 이상 실행될 수 있으므로 여러 태스크가 작성 될 수 있습니다. – mjibson

+0

내가 왜 일정을 변경할지 이유의 예. 내가 작업에서 사용자의 문서를 처리하고 있다고 가정 해 보겠습니다. 작업은 Frontend 인스턴스에서 실행되므로 10 분 타이머를 준수해야합니다. 작업의 현재 상태를 유지하려면 시간 제한에 가까워지면 작업을 완료하기 위해 작업을 다시 예약해야합니다. – ndixon

답변

0

작업 큐는 동일한 작업을 여러 번 실행할 수 있습니다. 이는 예상되는 동작입니다.

작업 대기열에서 작업하려면 멱등환이어야합니다. 즉 여러 번 실행되는 경우 마치 한 번 실행되는 것처럼 작동해야합니다. 그렇지 않으면 작업 대기열을 사용할 수 없습니다.

관련 문제