嘿,各位Django舵手们,不知道你们有没有经历过这样的绝望瞬间:
你花了老大劲儿,终于把Django项目部署上了服务器。项目里有个需要长时间运行的后台任务,比如处理异步邮件的Celery Worker,或者你自个儿用nohup启动的一个脚本。你美滋滋地启动它,一切正常,然后心满意足地关闭了终端窗口。
第二天,你兴冲冲地打开网站,发现邮件一封没发,任务队列积压成山。你一拍脑袋:“糟了!我那进程是不是又挂了?” 赶紧SSH连上去一看,果然,进程早就“嗝屁着凉”了。
这种场景,是不是像极了养了一个不省心的娃,你一不留神,他就给你整出点幺蛾子。
为什么会出现这种“惨剧”?
因为你在终端里直接运行的进程,和当前终端会话是“绑定”的。终端一关,会话结束,它发出的所有信号(包括让你进程继续运行的信号)也就跟着烟消云散了。所以,我们需要一个 “进程守护神器”—— 一个能脱离终端,在后台默默帮你管理、监控、自动重启这些进程的工具。
而今天的主角 Supervisor,就是这位神通广大的“超级保姆”。
一、Supervisor是何方神圣?为啥是Django的“官配保姆”?
你可以把Supervisor想象成一个24小时不眠不休的车间主任。它的工作就一件事:盯住你交代给它的几个“工人”(也就是进程),确保它们老老实实干活。
- 工人偷懒(进程意外崩溃)了? 主任立马把它重新拉起来干活(自动重启)。
- 车间重启了(服务器重启)? 主任上班第一件事就是把所有工人都叫起来(开机自启)。
- 你想看看工人干得咋样了? 主任随时给你提供工作日志(日志记录)。
- 你想让某个工人歇会儿或者滚蛋? 主任一个指令就能搞定(进程的启动、停止、重启)。
对于Django项目来说,尤其是当你引入了Celery(处理异步任务和定时任务的神器)之后,Supervisor几乎就成了生产环境的标配。没有它,你的Celery Worker和Beat就像是没娘的孩子,说没就没了。
二、请神上身:Supervisor的安装与“初体验”
安装简单到令人发指,一行命令搞定(这里以Ubuntu为例):
sudo apt-get up

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



