속도 제한이 있고 때때로 오랜 기간 동안 누락 된 (응답이없는) 서비스와 통신하는 셀러리 작업을 작성할 때 올바른 접근 방법은 무엇입니까?트위터와 comelicate하는 샐러리 작업
작업을 다시 시도해야합니까? 서비스에 너무 많은 시간이 없으면 어떻게 될까요? 오랜 기간 후에이 작업을 나중에 실행할 수 있도록 저장할 수있는 방법이 있습니까?
긴 태스크에서 하위 태스크 인 경우 어떻게합니까?
속도 제한이 있고 때때로 오랜 기간 동안 누락 된 (응답이없는) 서비스와 통신하는 셀러리 작업을 작성할 때 올바른 접근 방법은 무엇입니까?트위터와 comelicate하는 샐러리 작업
작업을 다시 시도해야합니까? 서비스에 너무 많은 시간이 없으면 어떻게 될까요? 오랜 기간 후에이 작업을 나중에 실행할 수 있도록 저장할 수있는 방법이 있습니까?
긴 태스크에서 하위 태스크 인 경우 어떻게합니까?
먼저 응답을 오랫동안 기다리지 않도록 소켓 시간 제한을 설정하는 것이 좋습니다. 소켓 TimeOutException을 잡을 수 있고,이 경우에는 15 분 같이 많은 시간을 재 시도 할 수 있습니다. 어쨌든 일반적으로 증분 비율로 incrementalRetry를 사용합니다. 작업 재시도 할 때마다 시간이 늘어나 긴 시간 동안 사용할 수있는 외부 서비스에 의존하는 작업을 작성할 때 유용합니다. 당신은 50과 같은 작업을 재 시도의 높은 수를 설정하고 작업이 같은 방법을 구현할 수있는 후보다 VAR
#20 seconds
self.default_retry_delay = 20
를 사용하여 표준 재시도 시간을 설정할 수 있습니다
def incrementalRetry(self, exc, perc = 20, args = None):
"""By default the retry delay is increased by 20 percent"""
if args:
self.request.args = args
delay = self.default_retry_delay
if self.request.kwargs.has_key('retry_deleay'):
delay = self.request.kwargs['retry_deleay']
retry_delay = delay+round((delay*perc)/100,2)
#print "delay"+str(retry_delay)
self.retry(self.request.args,
self.request.kwargs.update({'retry_deleay':retry_delay}),
exc=exc,countdown=retry_delay, max_retries=self.max_retries)
긴 태스크에서 하위 태스크 인 경우 어떻게해야합니까? 당신이 결과를 필요로하지 않는 경우
당신이 task.delay를 사용하여 비동기 모드로 실행할 수 있습니다 (인수의 = [])는 좋은 기능을 사용하면 다른 작업을 시작하고 후에 할 수 있도록 작업 그룹은 또한 모두 당신이 다른 일을 할 수있는 일을 완료했습니다.