Azure Web App блокирует AJAX-запросы к приложению django
У меня есть приложение на django (4.2.13 + python 3.10), которое в определенный момент делает AJAX-запросы для отображения прогресса пользователю при обработке данных из загруженного файла.
Когда я пробую это локально на своем компьютере (linux), это работает хорошо, и прогрессбар обновляется из данных, полученных в ответ на вызовы AJAX. Аналогичным образом он работает и на тестовом сервере (linux + nginx + gunicorn) и отображает прогресс без проблем.
На стороне браузера я использую команду jQuery .post для осуществления вызовов.
Когда я развертываю то же приложение в Azure Web App, оно не позволяет ни одному из вызовов пройти, все они остаются в состоянии Pending в браузере, и в журналах Azure нет абсолютно никаких следов.
Какие-нибудь подсказки?
OK, итак, я нашел проблему и, наконец, решил ее. Azure Web App использует gunicorn для запуска кода python / django, и по какой-то причине по умолчанию он порождает только одного рабочего. Изменил запуск на несколько рабочих, и теперь все работает.
Этот код нужно вставить в конфигурацию Web App в разделе Startup Command:
gunicorn --bind=0.0.0.0 --timeout 600 --workers=4 my_proj.wsgi:application
Надеюсь, это поможет другим людям с подобными проблемами.