3
我在nginx/uwsgi上運行的生產中有一個django應用程序。我們最近開始爲我們所有的連接使用SSL。自從搬到SSL,我經常收到以下消息:HTTPSConnectionPool超出最大重試次數
HTTPSConnectionPool(host='foobar.com', port=443):
Max retries exceeded with url: /foo/bar
本質上發生的事情是,我得到了瀏覽器與服務器的Django代碼,然後使用請求庫調用的API通信。它連接到生成錯誤的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)
向我們顯示您的請求代碼和nginx配置。事實上,你可以嘗試設置一個靜態html,並讓nginx指向它,使用請求來顯示它,以驗證這是與nginx,而不是django。 – CppLearner 2013-04-26 07:43:59
該問題未被本地化爲特定的代碼區域。它發生在各個部分。大部分在一個部分,因爲它最常用,但有時也在其他部分。我已更新我的問題以包含代碼片段。 – Gevious 2013-04-26 09:52:46
請求是否實際上對視圖做出了?它通過了nginx嗎? nginx是否將請求交給了Django實例?該網址的工作?對我而言,這些都是重要的問題。這個錯誤可能會引起誤解,並且可能不會提供失敗的原因。另外,第三行''url =「1.0/exam/learneranswer /」%self.api_url''你應該在字符串中有一個佔位符不應該嗎? – CppLearner 2013-04-26 11:19:46