2011-07-04 4 views
0

셀 콜리에서 http 콜백 작업 - http://celeryproject.org/docs/userguide/remote-tasks.html을보고 있습니다. 리모트 엔드 포인트가 사용 가능할 때 충분히 잘 작동하지만, 사용할 수없는 경우 (재시도 정책에 따라) 다시 시도하거나 리모트 엔드 포인트가 실패를 리턴하는 경우에도 작동합니다. 현재로서는 오류 인 것처럼 보이고 작업은 무시됩니다.샐러리에서 다시 시도 HTTP 콜백 작업

아이디어가 있으십니까?

답변

1

당신처럼 작업을 정의 할 수 있어야한다 :

class RemoteCall(Task): 
    default_retry_delay = 30 * 60 # retry in 30 minutes 

    def Run(self, arg, **kwargs): 
     try: 
      res = URL("http://example.com/").get_async(arg) 
     except (InvalidResponseError, RemoteExecuteError), exc: 
      self.retry([arg], exc=exc, *kwargs) 

이 MAX_RETRIES의 시도마다 한 번씩 30 분 그것을 계속 시도합니다.

+0

내가 잘못 생각할 수도 있습니다.하지만 엔드 포인트가 없을 때 get_async가 오류를 반환하지 않으므로 다시 시도하지 않습니다. (나는 아마 실수를 저질렀다. 그래서 이것을 사용하려면 - ("클라이언트"에서) RemoteCall(). delay()를 호출하겠습니까? –

관련 문제