在芹菜任务中使用请求的帖子上的错误413

时间:2017-02-21 14:03:48

标签: django nginx celery

我使用工作线程上的Requests框架(Celery with RabbitMQ作为代理)发布帖子。它大部分时间都可以正常工作但偶尔会得到413(请求正文太大错误)。我被告知nginx中的client_max_body_size被设置为50M,但尽管最大的帖子大小只有3MB,但帖子偶尔也会失败。任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:4)

您已经为侦听端口80的Web服务器包含了server指令。端口80传统上用于http流量。但是,如果您的应用程序使用https而不是http,则需要将其包含在服务器指令中,同时监听端口443上的https。

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

    client_max_body_size 50M;
.....

编辑:

为了回应您在评论中的澄清(此后似乎已被删除),我想解释您在非常高的层次上遇到的问题。

此图表描述了您遇到的情况:

enter image description here

您的流程中有问题的部分是红色箭头,因为有时在将大型对象发布到另一台服务器时会收到413错误代码。

您可以在服务器上修改的nginx.conf不会影响红色箭头。相反,它会影响虚线绿色箭头。绿色虚线箭头是您的芹菜工作者对您自己的nginx服务器的潜在POST请求。

例如,您可能希望芹菜工作者使用一些计算量很大的算法处理您的用户的个人资料图片,因此在您的芹菜工作者处理完之后会异步触发上传。然后,POST请求将定向到您自己的http://yourdomain.com/profile_uploadnginx.conf,该域受nginx.conf影响。

对其他服务器的传出请求不受您的服务器client_max_body_size 的约束。

要解决此问题,您应该与您的请求所针对的服务器的管理员联系,并要求他们增加服务器上的$path = "C:\xx\Microsoft.ServiceBus.dll" # The path of the Microsoft.ServiceBus.dll $topicName = "topic1" $connectionString = "xxxxxxxxxxx" Import-Module $path Write-Output "The [Microsoft.ServiceBus.dll] assembly has been successfully added to the script." $NamespaceManager= [Microsoft.ServiceBus.NamespaceManager]::CreateFromConnectionString($connectionString); Write-Output "NamespaceManager has been successfully created." $NamespaceManager.DeleteTopic($topicName) Write-Output "$topicName has been successfully deleted."