从服务器注销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作为服务器的标准行为?
我甚至不知道我应该在哪里找到解决办法,所以我会很高兴的任何帮助。
您当前停止注销过程。您需要一个流程管理器来监控流程。阅读gunicorn docs寻找很多可能的解决方案。
非常感谢您的回答。我尝试了一些监视器,但我没有太多时间,所以我今天晚上会继续。 – 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运行(您粘贴的命令)。
如何将过程放到背景中?我建议你使用主管,如果需要的话,他将运行并重启gunicorn。 –
不,我只是按CTRL + Z并写下bg。如何从dahrens中看到答案可能很糟糕。服务器和应用程序仍在工作,但请求无法正常工作。所以我没有想到将问题推到背景 – Bulva
因此,如果我理解得很好,这是因为gevent必须由Supervisor(或类似的东西)监控,这就是为什么应用程序仍然可以工作但请求不是。 – Bulva