django/gunicorn 应用重启
django/gunicorn app restart
我在同一台服务器上有 2 个不同的项目 运行ning。它们都是以 Gunicorn 作为 wsgi 服务器的 Django 项目。上面的服务器是 Apache。目前有一个 Jenkins 作业可以从 repo 更新源代码并重新启动(杀死并启动)gunicorn。这工作正常,直到服务器只服务于 1 个站点。
我杀了gunicorn如下
#!/bin/bash
ps -ef | grep gunicorn | grep -v grep | awk '{print }' | xargs kill -9
然后重新启动它。然而,这种方法不适用于 2 个站点,因为杀死 Gunicorn 会完全杀死所有 Gunicorn 进程。在我 运行 构建的任何时候,只会重新生成该站点的 gunicorn。
我环顾四周,发现 Supervisor 是我应该用来防止这种情况并无缝重启 Gunicorn 的一个实用程序。
你们有其他我应该遵循的建议或最佳做法吗?
谢谢
Gunicorn + Supervisor 是非常标准的堆栈,您可以将您的站点分离为不同的 Supervisor 任务,而不是告诉 Jenkins 重新启动 Supervisor,使用 Supervisor 方法重新启动您的一个任务,您就完成了。
如果您的站点崩溃并且 Gunicorn 需要再次执行,Supervisor 也很棒。
要仅获取项目的 gunicorn 并重新启动它,可以使用以下命令:
ps aux |grep gunicorn |grep yourappname | awk '{ print }' |xargs kill -HUP
其他 gunicorn 进程不会受到影响。
我在同一台服务器上有 2 个不同的项目 运行ning。它们都是以 Gunicorn 作为 wsgi 服务器的 Django 项目。上面的服务器是 Apache。目前有一个 Jenkins 作业可以从 repo 更新源代码并重新启动(杀死并启动)gunicorn。这工作正常,直到服务器只服务于 1 个站点。 我杀了gunicorn如下
#!/bin/bash
ps -ef | grep gunicorn | grep -v grep | awk '{print }' | xargs kill -9
然后重新启动它。然而,这种方法不适用于 2 个站点,因为杀死 Gunicorn 会完全杀死所有 Gunicorn 进程。在我 运行 构建的任何时候,只会重新生成该站点的 gunicorn。
我环顾四周,发现 Supervisor 是我应该用来防止这种情况并无缝重启 Gunicorn 的一个实用程序。
你们有其他我应该遵循的建议或最佳做法吗?
谢谢
Gunicorn + Supervisor 是非常标准的堆栈,您可以将您的站点分离为不同的 Supervisor 任务,而不是告诉 Jenkins 重新启动 Supervisor,使用 Supervisor 方法重新启动您的一个任务,您就完成了。
如果您的站点崩溃并且 Gunicorn 需要再次执行,Supervisor 也很棒。
要仅获取项目的 gunicorn 并重新启动它,可以使用以下命令:
ps aux |grep gunicorn |grep yourappname | awk '{ print }' |xargs kill -HUP
其他 gunicorn 进程不会受到影响。