每次我发布git pull origin master,我都在寻找比sudo restart projectname更好的值,这会拉下我对Django项目的最新更改.我相信这个restart命令与Upstart有关,我用它来启动/启动我的Gunicorn服务器进程.

此重新启动会导致短暂的停机.点击网络服务器(Nginx)的用户将得到500,因为Gunicorn仍在重启.事实上,它似乎可以立即重新启动,但需要几秒钟才能加载页面.

有什么办法让这件事变得天衣无缝吗?理想情况下,我希望自动重新加载git pull和Gunicorn.

推荐答案

要正常重新加载,您应该改用Upstart的reload命令,例如:

sudo reload jobname

根据initctl(Upstart)manpagereload将向进程发送HUP信号:

reload JOB [KEY=VALUE]...

       Sends the SIGHUP signal to running process of the named JOB instance.

.对于Gunicorn来说,这将触发优雅重启(参见FAQ).

Django相关问答推荐

Django ORM Groupby

如何从Django';S模型中的方法中检索值?

Django 中模型将数据存储在哪里?

NoneType对象没有属性保存Django

Django 有脚手架吗?

设置 SECURE_HSTS_SECONDS 可以不可逆转地 destruct 您的网站?

Django Blob 模型字段

在 Django CharFields 中自动截断 max_length 字段

Python / Django 中的 Unicode 与 UTF-8 混淆?

为用户添加自定义权限

Django:在管理界面中显示图像

保存前向 ModelForm 对象添加数据

如何在不同的元素上添加注释?

PyCharm 代码判断提示找不到模板文件,如何解决?

django - 使用 get_or_create 自动创建用户时设置用户权限

Django 应用程序运行良好,但收到 TEMPLATE_* 警告消息

具有 2 种语言的 Django 站点

django 应用基于条件的样式类

django.db.utils.OperationalError 无法连接到服务器

BASE DIR 的绝对路径是什么?