在芹菜任务中使用请求的帖子出现错误 413
Error 413 on posts using Requests in celery task
我在工作线程(使用 RabbitMQ 作为代理的 Celery)上使用 Requests 框架做了一个 post。大多数时候它工作正常,但偶尔我会收到 413(请求正文太大错误)。我被告知 nginx 中的 client_max_body_size 设置为 50M,但尽管最大的 post 大小只有 3MB,但 post 偶尔仍然会失败。知道为什么会发生这种情况吗?
您已经为侦听端口 80 的网络服务器添加了服务器指令。端口 80 传统上用于 http 流量。但是,如果您的应用程序使用的是 https,而不是 http,则您需要将其包含在服务器指令中,该指令也侦听服务 https 的端口 443。
server {
listen 443;
server_name www.***.com;
client_max_body_size 50M;
.....
编辑:
为了回应您在评论中的澄清(此后似乎已被删除),我想在非常高的层次上解释您遇到的问题。
下图描述了您遇到的情况:
您的流程中有问题的部分是 红色箭头 ,因为有时您在 POST 将大对象发送到另一台服务器时收到 413 错误代码。
您可以在您的服务器上修改的nginx.conf
不影响红色箭头。相反,它会影响 绿色虚线箭头 。绿色虚线箭头是一个潜在的 POST 从你的 celery worker 到你自己的 nginx 服务器的请求。
例如,您可能希望 celery worker 使用一些计算量大的算法来处理用户的个人资料图片,因此在 celery worker 处理完后异步触发上传。然后 POST 请求将指向您自己的域 http://yourdomain.com/profile_upload
,该域受您的 nginx.conf
影响。
向另一台服务器发出的请求不受您服务器nginx.conf
的约束。
要解决此问题,您应该与您的请求发送到的服务器的管理员联系,并要求他们增加服务器上的 client_max_body_size
。
我在工作线程(使用 RabbitMQ 作为代理的 Celery)上使用 Requests 框架做了一个 post。大多数时候它工作正常,但偶尔我会收到 413(请求正文太大错误)。我被告知 nginx 中的 client_max_body_size 设置为 50M,但尽管最大的 post 大小只有 3MB,但 post 偶尔仍然会失败。知道为什么会发生这种情况吗?
您已经为侦听端口 80 的网络服务器添加了服务器指令。端口 80 传统上用于 http 流量。但是,如果您的应用程序使用的是 https,而不是 http,则您需要将其包含在服务器指令中,该指令也侦听服务 https 的端口 443。
server {
listen 443;
server_name www.***.com;
client_max_body_size 50M;
.....
编辑:
为了回应您在评论中的澄清(此后似乎已被删除),我想在非常高的层次上解释您遇到的问题。
下图描述了您遇到的情况:
您的流程中有问题的部分是 红色箭头 ,因为有时您在 POST 将大对象发送到另一台服务器时收到 413 错误代码。
您可以在您的服务器上修改的nginx.conf
不影响红色箭头。相反,它会影响 绿色虚线箭头 。绿色虚线箭头是一个潜在的 POST 从你的 celery worker 到你自己的 nginx 服务器的请求。
例如,您可能希望 celery worker 使用一些计算量大的算法来处理用户的个人资料图片,因此在 celery worker 处理完后异步触发上传。然后 POST 请求将指向您自己的域 http://yourdomain.com/profile_upload
,该域受您的 nginx.conf
影响。
向另一台服务器发出的请求不受您服务器nginx.conf
的约束。
要解决此问题,您应该与您的请求发送到的服务器的管理员联系,并要求他们增加服务器上的 client_max_body_size
。