这个python程序怎么就是没更新

记录一次诡异的python-supervisor的异常退出

python代码环境

  1. python2.7的环境
  2. tlinux2.2(centos7) 系列
  3. python程序的代码,托管给supervisor

代码更新步骤

  1. 升级代码
  2. 然后重启服务 `supervisorctl restart $python-name

现象

1.同一份代码,本地使用python手动运行没问题

  1. 通过python-supervisor托管的一直不更新

找点日志看看原因

supervisorctl status 报异常

unix:///tmp/supervisor.sock no such file

python-superviosr进程还存在

ps aux | grep supervisor root 17874 0.0 0.1 221920 12052 ? Ss Jun04 0:39 /usr/bin/python /bin/supervisord -c /etc/supervisord.conf

把supervisor进程重启一把 supervisorctl status 服务又正常了 托管的代码也同样更新成功

初步结论: supervisor的控制命令异常

那为什么 supervisor会异常

unix:///tmp/supervisor.sock no such file

异常时这个文件不存在, 重启后这个文件重新产生,怀疑是什么地方,这个文件被删除了

手动复现现象

  1. 重启supervisor进程
  2. rm unix:///tmp/supervisor.sock
  3. 发现supervisor status异常报错
  4. 但是托管的代码进程还在
supervisorctl 报错,但托管的代码还在
  1. 更新托管的代码,尝试用 supervisorctl restart $python-name “ 重启失败

与现网反馈的现象一致 。 那基本确认是这个/tmp/ 被清理引起

那为什么/tmp/supervisor.sock文件会被删除

之前在tlnux1.2(centos6) 系列上面都没有这个问题 这台机器是tlinux2.2 是centos7增加了什么默认删除配置吗? google一把 “http://blog.51cto.com/kusorz/2051877/tmp目录的清理规则主要取决于/usr/lib/tmpfiles.d/tmp.conf文件的设定,默认的配置内容为:

就是systemd定期清理了/tmp/

解决方案

修改supervisord.conf的配置 把下面几个文件改到非/tmp的位置 比如我的是这样, 放到/usr/local/python-supervisor下面

file=/usr/local/python-supervisor/supervisor.sock ; the path to the socket file logfile=/usr/local/python-supervisor/supervisord.log ; main log file; default $CWD/supervisord.log pidfile=/usr/local/python-supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid serverurl=unix:////usr/local/python-supervisor/supervisor.sock ; use a unix:// URL for a unix socket

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励