2017-11-15 1 views
0

나는 opensshift online에서 python 이미지로 파이썬 api를 만들었습니다. 모든 데이터를 요청하면 응답하는 데 30 초 이상 걸립니다. 서버는 504 게이트웨이 시간 종료 HTTP 응답을 제공합니다. 응답이 취할 수있는 길이를 어떻게 구성합니까? > 경로에서 주석을 만들었습니다. 프록시 타임 아웃을 설정 한 것 같습니다.Openshift online v3 - 데몬 프로세스에서 응답 헤더를 읽을 때 시간 초과

haproxy.router.openshift.io/timeout: 600s 

문제가 남아 있습니다. 이제 문제가 발생했습니다. 메시지가 mod_wsgi에서 온 것 같습니다.

httpd (mod_wsgi-express 프로세스)의 구성을 request-timeout 60에서 request-timeout 600으로 변경하려고합니다. 나는 기본 이미지를 사용하고 https://github.com/sclorg/s2i-python-container/tree/master/2.7

로깅 :

Timeout when reading response headers from daemon process 'localhost:8080':/tmp/mod_wsgi-localhost:8080:1000430000/htdocs 

누군가가 내 응용 프로그램의 경로의 haproxy의 제한 시간을 변경하는 온라인 openshift에

+0

을 취소하기 전에 10 분 기다려야? 웹 요청의 컨텍스트에서 처리를 수행하지 말고 Celery와 같은 작업 큐잉 시스템으로 처리를 오프로드해야하는 것처럼 들립니다. 이러한 장기 실행 요청을 허용하면 동시에 많은 요청을 가져 오면 용량이 부족할 때 전체 웹 서버를 차단하게됩니다. –

+0

동의합니다. 앞으로 문제가 될 수 있습니다. 당장은 요청이 최대 10 회 이루어지기 때문에 작동하지만 앞으로는 증가 할 수 있습니다. 그것은 데이터를 생성하기 위해 많은 작업 서버가있는 API 요청입니다. 당신의 해결책은 무엇입니까? 작업을 셀러리에 맡기고 완료되면 응답을 보냅니 까? – jeew

+0

드문 경우 셀러리가 과도 할 것입니다. 그러나 일반적으로 백그라운드로 오프로드하고 대기중인 승인을 반환합니다. 그런 다음 클라이언트 설문 조사를 통해 어떻게 든 완료되었는지 확인하십시오. 그게 효과가 있다면 당신은 현재 그것과 함께 간다. 유일한 관심사는 시간 초과가 처리 된 모든 요청에 ​​적용된다는 것입니다. 즉 짧은 요청에 대해서는 mod_wsgi 기능이 느슨해져서 막히기 시작하면 복구 할 수 있습니다. 하나는 여러 개의 데몬 프로세스 그룹을 사용하고 http://blog.dscpl.com.au/2014/02/vertically-partitioning-python-web.html –

답변

0

다음을이 오류를 수정하는 방법을 알고 있나요

haproxy.router.openshift.io/timeout: 600s 

내 python 응용 프로그램의 app.sh에서 request-timeout 및 socket-timeout을 변경했습니다. 그래서 mod_wsgi에-명시 서버가 높은 시간 초과로 구성되어

ARGS="$ARGS --request-timeout 600" 
ARGS="$ARGS --socket-timeout 600" 

내 응용 프로그램 지금은 요청이 그렇게 오래 걸릴 것을하고있는 작품의 어떤 종류의 요청

관련 문제