2017-03-28 2 views
1

나는 django - python, javascript를 사용하여 프로젝트를 개발 중입니다. 뷰에서 20 분을 초과하는 장기 실행 프로세스 (시간 소모)를 호출하면 프로세스가 성공적으로 시작됩니다. 프로세스가 실행 중임을 사용자에게 알리기 위해 ajax의 로더를 사용했습니다. 프로세스가 완료되면 로더가 중지되고 완료된 상태로 변경됩니다.리소스를로드하지 못했습니다 : 서버가 504 (게이트웨이 제한 시간)의 응답으로 응답했습니다.

하지만 문제는 프로세스가 시작된 후 14.59 분 후에로드 프로그램이 중지되고 상태가 완료로 변경됩니다. 그러나 백그라운드에서 실행중인 프로세스는 아직 완료되지 않았습니다. 그 시간 이후에 페이지가 충돌합니다. 프로세스가 완료된 후 웹 페이지의 태그 아래 결과를 바인딩합니다. 이 태그에서 오류 504 (게이트웨이 제한 시간)이 발생합니다. 웹 콘솔 로그에서 리소스를로드하지 못했습니다. 서버가 504 (게이트웨이 제한 시간) 상태로 응답하면 위의 오류가 인쇄됩니다. 누구든지이 문제를 해결하도록 도와주세요.

그 시간이 지나면 django가 연결을 종료합니까? 그렇다면 시간 초과을 django 설정 (settings.py)에서 언급 할 수 있습니다. 아약스 호출에서 타임 아웃을 시도했지만 동일한 문제가 반환됩니다. 내 의심의 여지가 장고 개발 서버에 있습니다. django 개발 서버에 시간 초과가 있습니까? 하지만 내가 발견 한이 문제를 검색 할 때 nginx 서버에 동일한 유형의 문제가 발생합니다. 장고 nginx에 의존하거나 그것을 사용하고 있습니까?

더 이상의 설명이있는 경우 내 문제에 관한 모든 정보를 제공하려했으나 알려 주시기 바랍니다.

+0

당신입니다 사용 하시겠습니까? 'nginx'? 서버 구성에서 제한 시간을 구성 할 수 있습니다. – abhishekkannojia

+0

다른 기술을 사용하는 것이 좋습니다. [긴 폴링, 웹 소켓, SSE (Server-Sent Events) 및 Comet은 무엇입니까?] (http://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse - 그리고 - 혜성) – abhishekkannojia

+0

나는 어떤 웹 서버도 사용하지 않았다. 나는 기본 장고 서버 즉, 장고 개발 서버를 사용한다. 아직 배포하지 않았습니다. – Antro

답변

3

서버는 구성을 변경하여 수정할 수있는 특정 시간이 지나면 항상 연결을 닫지 만 이는 좋은 방법이 아닙니다. 다음과 같이 스크립트 시간을 줄이시 길 권장합니다 :

  • 코드 최적화.
  • 종종 데이터를 캐싱함으로써
  • 백엔드 서비스를 사용하여 데이터를 처리하고 신속하게 액세스 할 수있는 memcache 또는 redis와 같은 임시 저장소에 저장합니다.

은 또한 당신은 아약스 호출의 제한 시간을 처리해야

$.ajax({ 
    ... 
    timeout: 1000, 
    error: function(jqXHR, textStatus, errorThrown) { 
     if(textStatus==="timeout") { 
      //do something on timeout/show appropriate message. 
     } 
    } 
});​ 
시간 따라서 감소 기술을 코딩 성능 조정 및 최적화

참조 : https://docs.djangoproject.com/en/1.10/topics/db/optimization/ 어떤 웹 서버 https://docs.djangoproject.com/en/1.10/topics/performance/ https://realpython.com/blog/python/caching-in-django-with-redis/

+0

이미 오류 기능을 처리하기 위해 오류 기능을 사용했지만 오류 기능은 제공되지 않는다. – Antro