2013-04-26 4 views
3

nginx/uwsgi에서 실행중인 프로덕션에서 장고 응용 프로그램이 있습니다. 우리는 최근 우리의 모든 연결에 SSL을 사용하기 시작했습니다.HTTPSConnectionPool 최대 재시도 횟수를 초과했습니다

HTTPSConnectionPool(host='foobar.com', port=443): 
    Max retries exceeded with url: /foo/bar 

이 본질적으로 무슨 일하면 내가 다음 API를 호출 요청 라이브러리를 사용 장고 서버 코드와 통신 브라우저를 가지고있다 : SSL로 이동하기 때문에, 나는 종종 다음과 같은 메시지가 나타납니다. 오류를 생성하는 API에 대한 연결입니다. 또한 모든 요청을 하나의 세션 (요청 세션)으로 옮겼습니다. 그러나 이것은 도움이되지 못했습니다.

나는 이것이 문제 일 수 있다고 생각했기 때문에 uwsgi 리스너의 수를 늘렸지만, 우리 부하는 그리 높지 않습니다. 또한 SSL 이전에이 문제가 발생하지 않았습니다. 누구든지이 문제를 해결하는 방법에 대한 조언을 갖고 있습니까? 내가 API를 호출하는 방법

편집

코드. 나는 (주로) 축 어적으로 게시했다. 그 실제로 실패 코드,하지만 난 내보기 중 하나에서 일부 항목이 예외가 발생하면이 오류가 발생하는 것으로 나타났습니다 self.session.post

def save_answer(self): 
    logger.info("Saving answer to question") 
    url = "%s1.0/exam/learneranswer/" % self.api_url 
    response = {'success': False} 

    data = {'questionorder': self.request.POST.get('questionorder'), 
      'paper': self.request.POST.get('paper')} 
    data['answer'] = ",".join(self.request.POST.getlist('answer')) 
    r = self.session.post(url, data=simplejson.dumps(data)) 
    if r.status_code == 201: 
     logger.info("Answer saved successfully") 
     response['success'] = True 
    elif r.status_code == 400: 
     if r.text == "Paper expired": 
      logger.warning("Timer has expired") 
      response['message'] = 'Your time has run out' 
     if r.text == "Question locked": 
      response['message'] = \ 
       'This question is locked and cannot be answered anymore' 
     else: 
      logger.error("Unknown error") 
      self.log_error(r, "Unknown Error while saving answer") 
    else: 
     logger.error("Internal error") 
     self.log_error(r, "Internal error in api while saving answer") 
    return simplejson.dumps(response) 
+0

요청 코드 및 nginx 구성을 보여주십시오. 사실, 당신은 설정을 정적 HTML을 시도하고 그것에 nginx 포인트를 가지고, 이것을 확인하기 위해 그것을 표시하는 요청을 사용하여 nginx가 아닌 django와 관련이 있는지 확인할 수 있습니다. – CppLearner

+0

문제가 특정 코드 영역에만 국한되지 않습니다. 그것은 여러 부분에서 발생합니다. 대부분 한 섹션에서 사용 되었기 때문에 가장 많이 사용되었지만 다른 섹션에서도 사용되었습니다. 코드 스 니펫을 포함하도록 내 질문을 업데이트했습니다. – Gevious

+0

요청이보기에 실제로 작성 되었습니까? 그것은 nginx 통과 했습니까? nginx가 Django 인스턴스로 요청을 넘겨 줬습니까? URL이 작동합니까? 나에게 이것은 중요한 질문이다. 그 오류는 오해의 소지가 있으며 실제로 실패한 이유를 실제로 제공하지 못할 수 있습니다. 또한 3 행의''url = "1.0/exam/learneranswer /"% self.api_url'' 문자열에 자리 표시자가 있어야하지 않습니까? – CppLearner

답변

3

호출 할 때 예외가 발생 요청 라이브러리를합니다. 예를 들어, 다른 URL에 데이터를 게시 할 장고 '요청'프레임 워크를 사용하는 경우 :

r = requests.post(url, data=json.dumps(payload), headers=headers, timeout=5) 

사정 지역 서버에서 예외가 발생했습니다, 그 위로 거품이 저에게 위 한 오류를 준 연결 문제를 가지고 있었다.

try: 
    r = requests.post(url, data=json.dumps(payload), headers=headers, timeout=5) 
except requests.exceptions.ConnectionError as e: 
    r = "No response" 

을 그리고 그 (물론, 내가 더 오류 처리에 추가 건의 할 것입니다,하지만 위의 관련 부분 집합)을 고정 :이 교체.

관련 문제