2017-02-21 1 views
1

Ich mache einen Beitrag mit dem Requests-Framework auf einem Arbeiter-Thread (Sellerie mit RabbitMQ als Broker). Es funktioniert die meiste Zeit gut, aber gelegentlich bekomme ich eine 413 (Anfrage Körper zu groß Fehler). Mir wurde mitgeteilt, dass client_max_body_size in nginx auf 50M eingestellt ist, aber trotz der größten Postgröße von nur 3MB schlägt der Post gelegentlich immer noch fehl. Irgendwelche Ideen, warum das passieren könnte?Fehler 413 auf Posts mit Anfragen in Sellerie Task

+0

Sind Sie mit http oder https? –

+0

Machst du die Post-Anfrage an den gleichen Server (wo django läuft)? –

Antwort

4

Sie haben die Server-Direktive für den Webserver, der Port 80 überwacht, eingefügt. Port 80 wird traditionell für HTTP-Verkehr verwendet. Wenn Ihre Anwendung jedoch https anstelle von http verwendet, müssen Sie sie in die Server-Richtlinie aufnehmen und Port 443 überwachen, der auch https bedient.

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

    client_max_body_size 50M; 
..... 

EDIT:

Als Antwort auf Ihre Klarstellung in den Kommentaren (die seit dem entfernt zu haben scheinen worden ist), würde Ich mag das Problem erklären Sie sich auf einem sehr hohen Niveau sind zu erleben.

Die Situation Sie stoßen mit diesem Diagramm beschrieben:

enter image description here

Der problematische Teil des Prozesses ist der rote Pfeil, weil manchmal Sie einen 413-Fehlercode erhalten, wenn Sie ein großen Objekt auf einem anderen Server.

Die nginx.conf, die Sie auf Ihrem Server ändern können, wirkt sich nicht auf der rote Pfeil. Es wirkt sich vielmehr auf den gestrichelten grünen Pfeil . Der gestrichelte grüne Pfeil ist eine mögliche POST-Anforderung von Ihrem Sellerie-Arbeiter an Ihren eigenen nginx-Server.

Zum Beispiel möchten Sie vielleicht, dass der Selleriearbeiter ein Profilbild Ihres Benutzers mit einem rechenintensiven Algorithmus verarbeitet und den Upload daher asynchron auslöst, nachdem er in Ihrem Selleriearbeiter verarbeitet wurde. Die POST-Anfrage würde dann auf eigene Domain http://yourdomain.com/profile_upload gerichtet werden, die von Ihrem nginx.conf betroffen ist.

Die ausgehende Anfrage an einen anderen Server unterliegt nicht der nginx.conf Ihres Servers.

Um dieses Problem zu umgehen, sollten Sie mit dem Administrator des Servers, zu dem Ihre Anfrage geht, sprechen und sie bitten, die client_max_body_size auf ihrem Server zu erhöhen.

+2

Es muss in der Server-Konfiguration sein, in der du poste. –

Verwandte Themen