Я отправляю почтовый запрос из метода внутри веб-приложения, работающего на django + nginx + gunicorn. У меня нет проблем, получающих 200 ответов от того же кода при выполнении на собственном сервере django (с использованием сервера-сервера).
try:
response = requests.post(post_url, data=some_data)
if response.status_code == OK and response.content == '':
logger.info("Request successful")
else:
logger.info("Request failed with response({}): {}".format(response.status_code, response.content))
return response.status_code == OK and response.content == ''
except requests.RequestException as e:
logger.info("Request failed with exception: {}".format(e.message))
return False
Я проверил журналы сервера в post_url, он действительно возвращает 200 ответов с этими данными. Однако, когда я запускаю приложение за оружием и nginx, я не могу получить ответ (однако запрос отправляется). Код застревает в первой строке после блока try, а рабочий-произвол истекает (через 30 секунд).
Это журнал сервера apache в post_url:
[14/Sep/2016:13:19:20 +0000] "POST POST_URL_PATH HTTP/1.0" 200 295 "-" "python-requests/2.9.1"
ОБНОВЛЕНИЕ:
Я забыл упомянуть, этот запрос занимает менее секунды для выполнения, поэтому это не проблема с таймаутом. Что-то не так с конфигурацией? У меня есть стандартная установка nginx + gunicorn, где gunicorn установлен как proxy_pass в nginx. Я предполагаю, что, поскольку я занимаюсь прокси-сервером nginx, должен ли я делать что-то другое при отправке почтового запроса из приложения?