相关疑难解决方法(0)

检查python脚本是否正在运行

我有一个python守护程序作为我的Web应用程序的一部分运行/如果我的守护程序正在运行,我如何快速检查(使用python),如果没有,启动它?

我想以这种方式来修复守护进程的任何崩溃,因此脚本不必手动运行,它会在调用后立即自动运行然后保持运行.

如果我的脚本正在运行,我如何检查(使用python)?

python daemon process

90
推荐指数
8
解决办法
12万
查看次数

如何在多个进程尝试写入然后同时从文件读取时防止竞争条件

我有以下代码(为简洁起见而简化):

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 io race-condition python-import python-os

5
推荐指数
1
解决办法
4835
查看次数

当另一个python脚本运行时,如何停止我的python脚本?

我想知道如何在已经运行的时候停止当前的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.

python unix linux

2
推荐指数
1
解决办法
2847
查看次数

标签 统计

python ×3

daemon ×1

io ×1

linux ×1

process ×1

python-import ×1

python-os ×1

race-condition ×1

unix ×1