修复 #I6ZRZX
根据对报错信息的分析,我认为这个问题可能是由于程序退出时由于updatekiller.py已将pid文件删除,导致要退出的程序在atexit模块注册的函数要删除记录到pid时找不到pid文件,导致报错。 但经过复现尝试,发现不是杀进程时触发的。因为杀进程时被杀的进程不会执行atexit。 由于已更新至最新版本,无法通过更新进行复现。所以具体报错原因尚未探究清楚,问题尚未完全修复。
This commit is contained in:
parent
d37c7514f3
commit
fb46147547
|
@ -8,15 +8,12 @@ PIDFILE = '/tmp/uengine-runner.pid'
|
||||||
#程序结束时清理pid
|
#程序结束时清理pid
|
||||||
@atexit.register
|
@atexit.register
|
||||||
def remove_pid():
|
def remove_pid():
|
||||||
try:
|
'''程序结束时清理pid'''
|
||||||
with open(PIDFILE) as pidfile:
|
with open(PIDFILE) as pidfile:
|
||||||
pidlst = pidfile.readlines()
|
pidlst = pidfile.readlines()
|
||||||
pidlst.remove(str(PID)+'\n')
|
pidlst.remove(str(PID)+'\n') #移除记录中的pid
|
||||||
with open(PIDFILE,'w') as pidfile:
|
with open(PIDFILE,'w') as pidfile:
|
||||||
pidfile.writelines(pidlst)
|
pidfile.writelines(pidlst)
|
||||||
except:
|
|
||||||
# 忽略
|
|
||||||
pass
|
|
||||||
|
|
||||||
#更新时结束进程
|
#更新时结束进程
|
||||||
def main():
|
def main():
|
||||||
|
@ -25,7 +22,7 @@ def main():
|
||||||
os.kill(int(i),15)
|
os.kill(int(i),15)
|
||||||
except ProcessLookupError:
|
except ProcessLookupError:
|
||||||
pass
|
pass
|
||||||
os.remove(PIDFILE)
|
## os.remove(PIDFILE) #因修复#I6ZRZX而注释
|
||||||
|
|
||||||
#当该程序被直接执行时,执行结束进程操作。如果是导入的形式,则只是记录pid
|
#当该程序被直接执行时,执行结束进程操作。如果是导入的形式,则只是记录pid
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue