我有一个python守护程序作为我的Web应用程序的一部分运行/如果我的守护程序正在运行,我如何快速检查(使用python),如果没有,启动它?
我想以这种方式来修复守护进程的任何崩溃,因此脚本不必手动运行,它会在调用后立即自动运行然后保持运行.
如果我的脚本正在运行,我如何检查(使用python)?
我有以下代码(为简洁起见而简化):
import os
import errno
import imp
lib_dir = os.path.expanduser('~/.brian/cython_extensions')
module_name = '_cython_magic_5'
module_path = os.path.join(lib_dir, module_name + '.so')
code = 'some code'
have_module = os.path.isfile(module_path)
if not have_module:
pyx_file = os.path.join(lib_dir, module_name + '.pyx')
# THIS IS WHERE EACH PROCESS TRIES TO WRITE TO THE FILE. THE CODE HERE
# PREVENTS A RACE CONDITION.
try:
fd = os.open(pyx_file, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
except OSError as e:
if e.errno == errno.EEXIST:
pass
else:
raise
else:
os.fdopen(fd, 'w').write(code)
# THIS …Run Code Online (Sandbox Code Playgroud) 我想知道如何在已经运行的时候停止当前的python脚本.
要清楚,我想用我自己的python脚本编写它.所以首先,在main方法中,它将检查我的python脚本是否已经运行.如果它正在运行,我想退出并显示错误消息.
目前我正在尝试此代码:
if os.system("ps ax | grep sample_python.py") == True:
print "fail"
exit(0)
else:
print "pass"
Run Code Online (Sandbox Code Playgroud)
上面的代码看起来像是grepping python名称..但它总是转到else循环而不是进入if循环并退出..
因此,出于测试目的,我运行我的脚本,并在另一个终端上再次运行我的脚本.第一个脚本不会停止,但第二个python不会进入if循环打印出错误消息.
我怎样才能解决这个问题?
好吧,我发现了一个愚蠢的事情,我想看看是否有人可以帮助我绕过它..所以我的观点是杀死刚开始的python,如果另一个python正在运行..但是愚蠢的事情是..因为我我正在运行我的python并在这个python中运行一个检查编码..它将一直退出..因为我一启动python PID将被创建并将运行...
所以.. python启动 - > pid创建并运行 - >检查python是否正在运行 - >是的python正在运行 - >退出.
我想看看是否有办法进行python启动 - >检查python是否已经运行 - >如果正在运行则杀死当前的python而不是正在运行的python.