我在同一台服务器上运行了 2 个不同的项目。它们都是以 Gunicorn 作为 wsgi 服务器的 Django 项目。上面的服务器是 Apache。目前有一个 Jenkins 作业可以从 repo 更新源代码并重新启动(杀死并启动)gunicorn。这工作正常,直到服务器只服务于 1 个站点。 我杀了gunicorn如下
#!/bin/bash
ps -ef | grep gunicorn | grep -v grep | awk '{print $2}' | xargs kill -9
然后重新启动它。然而,这种方法不适用于 2 个站点,因为杀死 Gunicorn 会完全杀死所有 Gunicorn 进程。在我运行构建的任何时候,只会重新生成该站点的 gunicorn。
我环顾四周,发现 Supervisor 是我应该用来防止这种情况并无缝重启 Gunicorn 的一个实用程序。
你们有其他我应该遵循的建议或最佳做法吗?
谢谢
最佳答案
要仅获取项目的 gunicorn 并重新启动它,您可以使用以下命令:
ps aux |grep gunicorn |grep yourappname | awk '{ print $2 }' |xargs kill -HUP
其他 gunicorn 进程不会受到影响。
关于django/gunicorn 应用重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32702635/