2017-02-21 4 views
1

Я делаю сообщение, используя структуру Requests на рабочем потоке (Celery with RabbitMQ в качестве брокера). Он отлично работает в большинстве случаев, но иногда я получаю 413 (слишком большая ошибка запроса). Мне сообщили, что client_max_body_size в nginx установлен на 50M, но, несмотря на то, что наибольший размер сообщения составляет всего 3 МБ, сообщение иногда все еще терпит неудачу. Любые идеи, почему это может произойти?Ошибка 413 на сообщениях с использованием запросов в задании сельдерея

+0

Вы используете http или https? –

+0

Выполняет ли запрос на тот же сервер (где работает django)? –

ответ

4

Вы включили директиву сервера для веб-сервера, прослушивающего порт 80. Порт 80 традиционно используется для трафик http. Однако, если ваше приложение использует https, а не http, вам нужно включить его в директиву сервера, прослушивая порт 443, обслуживающий https.

server { 
    listen 443; 
    server_name www.***.com; 

    client_max_body_size 50M; 
..... 

EDIT:

В ответ на Ваше разъяснение в комментариях (которые, как представляется, были удалены с тех пор), я хотел бы объяснить проблему вы столкнулись на очень высоком уровне.

Ситуации вы сталкиваясь описываются этой диаграмма:

enter image description here

Проблемная частью вашего процесса является красной стрелки, потому что иногда вы получаете код на 413 об ошибке при проводке большого объект другому серверу.

nginx.conf что вы можете изменить на своем сервере не влияет красная стрелка. Скорее, это влияет на пунктирной зеленой стрелкой. Пунктирная зеленая стрелка - это потенциальный запрос POST от вашего работника сельдерея на ваш собственный сервер nginx.

Например, вы можете захотеть, чтобы работник сельдерея обработал изображение профиля вашего пользователя с помощью некоторого сложного алгоритма вычисления и, следовательно, инициировал загрузку асинхронно после того, как он был обработан вашим работником сельдерея. Запрос POST затем будет направлен на ваш собственный домен http://yourdomain.com/profile_upload, на который влияет ваш nginx.conf.

Исходящий запрос на другой сервер не подлежит вашему серверу nginx.conf.

Чтобы обойти эту проблему, вы должны поговорить с администратором сервера, на который отправляется ваш запрос, и попросить их увеличить client_max_body_size на своем сервере.

+2

Он должен быть в той конфигурации сервера, которую вы отправляете. –

Смежные вопросы