2013-05-28 2 views
1

mod_wsgi를 통해 아파치에서 실행되는 장고 서버가 있습니다. API 호출을 통해 호출되는 대규모 백그라운드 작업이 있는데 백그라운드에서 수행되는 이메일 (일반적으로 몇 시간이 걸림)을 검색합니다.아파치 장고 - 504 게이트웨이 타임 아웃 방지

디버깅을 용이하게하기 위해 예외적으로 백그라운드에서 발생하는 모든 작업을 차단하기 위해 API 호출을 만들어 작업 차단을 실행했습니다. 따라서 브라우저는 실제로 그 시간 동안 차단하고 결과를 수신합니다.

로컬 호스트에서 괜찮습니다. 그러나 실제 아파치 환경에서는 약 30 분 후에 504 게이트웨이 시간 초과 오류가 발생합니다.

Apache가 (이 디버그 단계에서) HTTP 요청이 504 게이트웨이 시간 초과를 반환하지 않고 몇 시간 동안 차단되도록 설정을 변경하려면 어떻게합니까?

Apache 구성에서이 값을 변경할 수 있다고 가정합니다.

답변

1

Apache 프로세스에서 장기 실행 작업을 수행하거나 기다리지 않아야합니다. Celery와 같은 백그라운드 작업 큐잉 시스템을 사용하여 실행하십시오. 대기열에있는 모든 웹 요청을 반환하고 필요에 따라 일종의 폴링 메커니즘을 구현하여 작업이 완료되고 결과를 얻을 수 있는지 확인하십시오.

또한 504가 일부 프런트 엔드 프록시 (명시 적 또는 투명) 또는 부하 분산 장치에서 오지 않았습니까? Apache에는 30 분의 기본 시간 초과가 없습니다.

+0

그레이엄, 입력 해 주셔서 감사합니다. 셀러리를 BG 처리로 사용하는 것은 이미 수행 한 작업입니다. BG 대 태스크를 능동적으로 실행하는 것은 디버깅 목적으로 사용됩니다. BG에서 실행할 때 예외 설명을 저장할 수 있지만 적극적으로 실행하면 전체 스택 설명이 포함 된 노란색 장고 화면이 표시됩니다. 프록시 또는로드 밸런서에 대해서는 잘 모르겠습니다. 나는 WebFactional 호스팅 계정에서 호스팅되는 앱을 보유하고 있습니다. 그것은 정확하게 내가 알아낼 도움이 필요한 종류의 세부 사항입니다. –

+0

WebFusion 포럼에서 Apache 앞에있는 프론트 엔드 nginx 프록시에 어떤 종류의 시간 초과 값이 있는지 물어보십시오. 그것들은 nginx와 함께 사용하기에는 너무 큰 값인 것 같지만 실제로 30 분 정도의 높은 값을 가질 수 있습니다. –

관련 문제