Django使用’python manage.py’runserver而不是Gunicorn

Django use 'python manage.py' runserver instead Gunicorn

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

python manage.py runserver

从终端所有工作都很棒,但当部分是关闭应用程序不起作用。

如果关闭会话,如何在后台运行命令"python manage.py runserver"永远工作(直到我会杀死它)?

我知道有uWSGI但我更喜欢如果可能直接使用django native命令。

提前致谢


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

1
nohup python manage.py runserver &

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

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

但请注意,manage.py runserver不应该用于生产。对于生产,你真的应该使用适当的WSGI服务器,例如uWSGI或Gunicorn。


如果要在关闭SSH和mosh连接后在后台运行脚本,则可以安装和使用tmux

1
$ 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中运行。从这里学习使用tmux的基本命令


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