django / gunicorn app重启

时间:2015-09-21 18:56:42

标签: django gunicorn

我在同一台服务器上运行了2个不同的项目。它们都是与Gunicorn一起作为wsgi服务器的Django项目。顶部的服务器是Apache。目前有一个Jenkins作业,它从repo更新源代码并重启(Kill and start)gunicorn。这工作正常,直到服务器只服务1个站点。 我杀了枪炮如下

#!/bin/bash
ps -ef | grep gunicorn | grep -v grep  | awk '{print $2}' | xargs  kill -9

然后重新启动它。然而,这种方法不适用于2个站点,因为杀死Gunicorn完全杀死所有Gunicorn进程。在我运行构建的任何时候,只有该网站的枪支将被重新生成。

我环顾四周,发现Supervisor是一个实用程序,我应该用它来防止这种情况并无缝地重启Gunicorn。

你们有其他的建议或最佳实践我应该遵循吗?

由于

2 个答案:

答案 0 :(得分:1)

Gunicorn + Supervisor是非常标准的堆栈,您可以将您的站点分离为不同的Supervisor任务,而不是告诉Jenkins重新启动Supervisor,使用Supervisor方法重新启动您的一个任务,然后就完成了。

如果您的网站崩溃并且Gunicorn需要再次执行,主管也很棒。

答案 1 :(得分:1)

要仅获取项目的主角并重新启动它,可以使用以下命令:

ps aux |grep gunicorn |grep yourappname | awk '{ print $2 }' |xargs kill -HUP

其他Gunicorn程序不会受到影响。