Django в Docker на Nginx запрос к себе не проходит в контексте другого запроса
У меня есть приложение Django, развернутое в контейнере поверх Nginx с помощью Dokku. Одна из функций представления приложения Django включает в себя запрос:
views.py
def foo(request):
...
response = requests.get(url)
...
Вероятно, стоит отметить, что url - это url самого приложения Django, так что запрос идет от приложения к самому себе. Запрос к одной из конечных точек API (причины для этого исторические). Когда вызывается представление, запрос к url завершается неудачей с таймаутом 504 шлюза.
Я не могу воспроизвести это в любом другом контексте, а именно:
- Нет ошибки при запуске на localhost с сервером разработки, где url - это url приложения разработки (localhost to itself работает).
- При запуске на localhost с сервером разработки, где я вручную делаю url производственным url (localhost to production работает). Ошибки нет.
- При выполнении этого запроса на производственном сервере, но вне представления, ошибки нет. В частности, я выполнил docker exec в контейнер, запустил среду Django (оболочку manage.py) и выполнил точный запрос, который делало представление, и он сработал! (production to production works) Похоже, что только когда запрос выполняется в контексте представления, которое само отвечает на другой запрос, я получаю проблему.
Есть идеи?