【问题标题】:Django use 'python manage.py' runserver instead GunicornDjango 使用“python manage.py”运行服务器而不是 Gunicorn
【发布时间】:2019-02-16 17:59:25
【问题描述】:

我有一个托管在亚马逊 ec2 linux 实例上的 django 项目。 为了在部分关闭时运行我的应用程序,我使用 gunicorn 但我遇到了一些错误和性能下降。 当我运行命令时:

python manage.py runserver

从终端一切都很好,但是当部分关闭时,应用程序不起作用。

如何在关闭会话的情况下在后台运行命令“python manage.py runserver”以永久工作(直到我将其杀死)?

我知道有 uWSGI,但如果可能的话,我更喜欢直接使用 django 本机命令。

提前致谢

【问题讨论】:

  • 不要这样做。 Django Docsmanage.py runsverver 非常具体:请勿在生产环境中使用此服务器

标签: python django nginx gunicorn django-manage.py


【解决方案1】:

这里发生的情况是脚本在会话关闭时被SIGHUP 信号中断。为了克服这个问题,有一个名为nohup 的工具不会将SIGHUP 传递给它执行的程序/脚本。按如下方式使用:

nohup python manage.py runserver &

(注意最后的&,需要manage.py在后台而不是前台运行)。

默认情况下nohup 重定向文件nohup.out 中的输出,因此您可以使用tail -f nohup.out 来查看您的Django 应用程序的输出/日志。

但请注意,manage.py runserver不应在生产环境中使用。对于生产,您确实应该使用适当的 WSGI 服务器,例如 uWSGI 或 Gunicorn。

【讨论】:

    【解决方案2】:

    如果您想在后台运行脚本,即使在关闭 SSHmosh 之后也可以安装和使用 tmux强>连接

    $ sudo apt-get install tmux
    

    然后使用命令$ tmux 运行它,只需执行你的命令就会打开一个新的shell

    $python manage.py runserver 0.0.0.0:8000

    0.0.0.0:8000 此处将自动获取您允许的主机。现在您可以使用 CTRL + B 分离您的 tmux 会话以在后台运行它,然后按 D

    现在您可以退出终端,但您的命令会继续在 tmux 中运行。只需从 here 学习使用 tmux 的基本命令

    【讨论】:

      【解决方案3】:

      为此,您可以使用 screen 只需启动一个新屏幕并运行 python manage.py runserver

      【讨论】:

        猜你喜欢
        • 2019-01-12
        • 1970-01-01
        • 1970-01-01
        • 2019-02-04
        • 2011-08-11
        • 1970-01-01
        相关资源
        最近更新 更多