내 Django 앱에서 재 게시 엔드 포인트에 도달 한 후 해당 기능이 해당 상태를 확인하기 위해 트리거되는 작업 (다시 게시 작업)에 의해 트리거되는 함수가 있습니다. 다른 API 호출을 통해 30 분. 그 기능은 다음과 같습니다 :django에서 30 분 API 호출을 실행하는 방법
timeout = time.time() + 60 * 30
published_flag = False
while time.time() < timeout:
data = requests.get(apiUrl + dist_id).json()
try:
published_flag = data['flags']
if published_flag:
break
else:
time.sleep(5)
continue
except KeyError:
break
이 제한 시간은 30 분이며 매우 길다. 그러나 플래그 상태가 바뀌면 최악의 시나리오가 30 분입니다. 이 작업은 여러 번 트리거 될 수 있습니다 (여러 다시 게시 단추를 누를 수 있음). 엔드 포인트가 본질적으로 시간 초과되면 30 분이 너무 길어서 엔드 포인트가 작동하지 않습니다. 따라서 웹 소켓을 통해 프론트 엔드로 데이터를 전달합니다.
더 똑똑한 방법이 있나요?
나는 느린 작업을 백그라운드에서 실행하기 위해'셀러리'http://www.celeryproject.org를 사용할 수 있다고 생각합니다. 작업이 완료되면 웹 소켓 연결을 유지하여 클라이언트에 알립니다. – Enix
그러나 한 번에 6-7 개의 재 게시 작업이있을 수 있습니다. 그래서 그것들 각각에 대해, 제가 노동자의 수를 늘릴 수 있습니까? – foxtrot3009
예, 원인이 있습니다. 'celery' 자습서를 볼 수 있습니다 http://docs.celeryproject.org/ko/latest/userguide/workers.html#starting-the-worker – Enix