2017-02-21 21 views
1

ワーカースレッド(ブローカーとしてRabbitMQを使用したセロリ)でリクエストフレームワークを使用して投稿を行います。ほとんどの場合、うまく動作しますが、ときどき413(リクエストボディが大きすぎるエラー)が発生します。私は、nginxのclient_max_body_sizeが50Mに設定されていると知らされていますが、最大のポストサイズがわずか3MBであるにもかかわらず、時折ポストが失敗することがあります。なぜこのようなことが起きているのでしょうか?セロリのリクエストを使用している投稿のエラー4135

+0

httpまたはhttpsを使用していますか? –

+0

あなたは同じサーバー(djangoが実行されている場所)に投稿要求をしていますか? –

答えて

4

ポート80でリッスンしているWebサーバーのサーバーディレクティブが含まれています。ポート80は、従来、httpトラフィックに使用されていました。ただし、アプリケーションでhttpではなくhttpsを使用している場合は、httpsに対応するポート443でリッスンするサーバーディレクティブにそのアプリケーションを含める必要があります。

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

    client_max_body_size 50M; 
..... 

EDIT:(以降削除されているように見える)コメント欄に明確に対応して

、私はあなたが非常に高いレベルで経験している問題を説明したいと思います。

あなたが直面している状況が、この図で説明されています。大を投稿するときは、時にはあなたは413エラーコードを受け取るためにあなたのプロセスの問題の一部は、赤い矢印ある

enter image description here

オブジェクトを別のサーバーに追加します。

サーバー上で変更できるnginx.confは、赤い矢印には影響しません。むしろ、それは点線の緑矢印に影響します。点線の緑色の矢印は、セロリのワーカーからあなた自身のnginxサーバーへの潜在的なPOSTリクエストです。

例えば、セロリの作業者が、計算量の多いアルゴリズムでユーザーのプロフィール画像を処理して、セロリのワーカーで処理した後に非同期にアップロードをトリガーしたい場合があります。 POSTリクエストは、nginx.confの影響を受ける自分のドメインhttp://yourdomain.com/profile_uploadに送信されます。

他のサーバーへの発信リクエストは、サーバーのnginx.confの対象ではありません。

この問題を回避するには、リクエストが送信されているサーバーの管理者に連絡し、サーバー上でclient_max_body_sizeを増やすように依頼する必要があります。

+2

あなたが投稿しているサーバーの設定に入っている必要があります。 –

関連する問題