2012-03-13 2 views
2

완료하는 데 약간의 시간이 걸리는 웹 훅이 있습니다 (약 5 분). 그러나 약 30 초 후에 요청이 시간 초과됩니다.장고에서 FCGI 요청 시간 초과를 방지하는 방법

저는 HostGator와 공유 호스팅에 있으며 FCGI를 사용하여 배포했습니다.

요청이 처리 될 때까지 HTTPResponse가 없으므로 요청 시간이 초과되었다고 생각합니다. 요청이 처리되는 동안 뷰에서 일부 HTTPResponse를 생성 할 수 있다면 스크립트가 더 오래 실행될 수 있습니다.

[이전 기사 : print 'hi'을 사용하면 로그인하는 대신 브라우저에 'hi'가 인쇄되는 Google App Engine을 사용하기 시작했습니다. 장고와 같은 것이 가능합니다. 그렇게하면 요청이 완료되는 동안에도 응답을 보낼 수 있습니다.] (나는 Django IRC에서 메시지를 응답으로 보낼 수 있었지만 Httpresponse가 반환 될 때만 메시지를 보냅니다.) 따라서 iterable과 함께 Httpresponse를 사용하십시오.

답변

1

Django IRC의 사람들은 생성기와 함께 HttpResponse를 사용하여 지속적으로 출력을 보내고 스크립트가 유휴 시간 초과되지 않도록했습니다.

발전기에서 Httpresponse를 사용하기위한 코드는 훌륭하게 described herehere입니다.

감사합니다.

2

타임 아웃은 장고가 아닌 웹 서버에 있습니다. 당신은 웹 서버에 요청을하고 그것으로부터 응답을 얻습니다, 그래서 당신은 그 응답의 밖에서 아무것도 얻을 수 없습니다. 귀하의 경우에는 서버에서 백그라운드 태스크를 작성해야하며 대개 cron 또는 celery로 시작해야합니다 (cron을 사용하여 hostgator에서 셀러리를 실행할 수 없으므로 cron을 사용하여 작업 큐에 대기열을 배치하십시오). Cliend 측에서는 AJAX를 사용하여 주기적으로 서버에 요청을 보내므로 작업 상태를 확인하고 완료되면 알림을 표시 할 수 있습니다.

+0

안녕하세요. ilavar 예, 시간 초과는 아파치 서버가 아닌 장고입니다. 하지만 Django 스크립트에서 30 초 이상 응답이 없으므로 시간 초과가 발생했습니다 (처리 후에 만 ​​출력을 던짐). 그것은 이미 webhook (Celery 또는 다른 대기열 프로그램에서도 사용됨)이었습니다. 이 문제는 IRC에서 제안 된대로 iterable에서 HttpResponse를 사용하여 해결되었습니다. 곧 여기에 게시 할 예정입니다. – Pratyush

관련 문제