从服务器注销AJAX请求无法正常使用gunicorn

问题描述:

本周末我在服务器上部署了我的第一个django应用程序。这是明确的VPS服务器,所以我必须安装PostgreSQL,PostGIS,设置virtualenv等。制作应用程序需要一些时间。从服务器注销AJAX请求无法正常使用gunicorn

在Django开发服务器一切正常,但是当我部署我的应用程序gunicorn(nginx的合作)的VPS服务器的AJAX请求不能正常工作。我有三个AJAX请求在另一个之后发送。只有一个或两个请求返回值。所以我发现GEVENT和这个线程(Django AJAX requests during regular request not going through),并通过以下命令运行gunicorn:

gunicorn myapp:wsgi:application --bind 0.0.0.0:9000 -k gevent --worker-connections 1001 --workers=3 

和它的作品。所有的请求返回值,一切看起来不错。所以我把进程放到后台并从服务器注销。

但每次从服务器注销时,请求都停止工作。行为与没有gevent的第一时间相同。可能是激活虚拟环境的问题,设置还是这是Ubuntu作为服务器的标准行为?

我甚至不知道我应该在哪里找到解决办法,所以我会很高兴的任何帮助。

+0

如何将过程放到背景中?我建议你使用主管,如果需要的话,他将运行并重启gunicorn。 –

+0

不,我只是按CTRL + Z并写下bg。如何从dahrens中看到答案可能很糟糕。服务器和应用程序仍在工作,但请求无法正常工作。所以我没有想到将问题推到背景 – Bulva

+0

因此,如果我理解得很好,这是因为gevent必须由Supervisor(或类似的东西)监控,这就是为什么应用程序仍然可以工作但请求不是。 – Bulva

您当前停止注销过程。您需要一个流程管理器来监控流程。阅读gunicorn docs寻找很多可能的解决方案。

+0

非常感谢您的回答。我尝试了一些监视器,但我没有太多时间,所以我今天晚上会继续。 – Bulva

我建议你使用supervisor。它将确保gunicorn运行,并在崩溃时重新启动。与sudo apt-get install supervisor

安装它让我们假设你有一个名为test的网站,你可以使用下面的test.config(内/etc/supervisor/conf.d/

[program:test] 
directory=/home/test/www 
command=/home/test/commands/start 
user=nobody 
autostart=true 
autorestart=true 
redirect_stderr=true 
stopsignal=QUIT 
stopasgroup=true 
killasgroup=true 

哪里/home/test/www是你的Django应用程序的位置(你可以改变它当然)和/home/test/commands/start是一个脚本,您可以告诉gunicorn运行(您粘贴的命令)。

+0

非常感谢。我今天会尝试 – Bulva

+0

这不起作用。我在文档中看到它不适用于python 3.对不起。我没有写这些信息。我将继续尝试下一个选项 – Bulva

+0

Supervisor不支持python3,但您的网站可以使用它。我之前使用过这种组合 –