在我的项目中,我有Nginx,Django和jQuery。我使用JQuery post请求来调用Django函数,有时需要一段时间才能完成。
问题是,当我在post中使用async/await函数时,它会完全阻止Nginx,直到任务完成。我甚至无法在另一台计算机上打开新选项卡或打开项目
我该怎么弥补?还是应该用celery 代替?
JS函数示例:
async function very_long_function(params) {
// some code
await $.post(post_params).done(function (data) {
// some code with data Django returned
})
// some code that has to be after
}
nginx.conf文件:
user nginx;
worker_processes 16;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65s;
include /etc/nginx/conf.d/*.conf;
}
1条答案
按热度按时间h7wcgrx31#
原来问题不在Nginx,而是在我用于Django的Gunicorn。看起来Nginx配置很好,但在后端,我默认只有一个同步工人。所以我在Gunicorn启动脚本中添加了
--workers 4 --worker-class gevent
,现在它可以工作了别重蹈我的覆辙