【问题标题】:django/gunicorn app restartdjango/gunicorn 应用重启
【发布时间】:2015-12-18 14:10:46
【问题描述】:

我有 2 个不同的项目在同一台服务器上运行。它们都是以 Gunicorn 作为 wsgi 服务器的 Django 项目。最上面的服务器是 Apache。目前有一个 Jenkins 作业可以从 repo 更新源代码并重新启动(杀死并启动)gunicorn。在服务器仅服务于 1 个站点之前,这一直很好。 我按如下方式杀死了独角兽

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

然后重新启动它。但是,这种方法不适用于 2 个站点,因为杀死 Gunicorn 会完全杀死所有 Gunicorn 进程。在我运行构建的任何时候,只有那个站点的 gunicorn 会重新生成。

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

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

谢谢

【问题讨论】:

    标签: django gunicorn


    【解决方案1】:

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

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

    其他 gunicorn 进程不会受到影响。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的回复。
      猜你喜欢
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      • 2018-03-08
      • 2011-08-10
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 2017-10-09
      相关资源
      最近更新 更多