如果所谓的功能蟒蛇守护不起作用

问题描述 投票:0回答:2

我试图使用Python守护程序库来产生一个守护进程会写入文件。

当我直接创建守护进程“如果__name__ ==‘__main__’”的说法,守护成功写入文件:

from daemon import DaemonContext
def main():
    my_file.write("Daemon creation was successful")
    my_file.close()

if __name__ == "__main__":
    my_file = open("my_file", "w+")
    with DaemonContext(files_preserve=[my_file.fileno()]):
        main()

然而,当我使用一个单独的功能守护创造,守护程序不会写入文件:

from daemon import DaemonContext
def main():
    my_file.write("Daemon creation was successful")
    my_file.close()

def create_daemon():
    my_file = open("my_file", "w+")
    with DaemonContext(files_preserve=[my_file.fileno()]):
        main()

if __name__ == "__main__":
    create_daemon()

if语句在工作实例,并在非工作例如“create_daemon”功能有着完全相同的代码。那么,为什么我无法创建调用一个函数,一个守护进程?

python daemon function-calls python-daemon
2个回答
3
投票

这有没有关系守护进程。 main没有获得my_file;你没有在传递文件作为参数或任何东西。


0
投票

在第二个例子中,main函数引用my_file这是不是在该函数的范围。

def main():
    my_file.write("Daemon creation was successful")
    my_file.close()

该函数将(如果你的例子是完整的)提高了NameErrormy_file

纠正的方法之一就是让my_file main的参数。

© www.soinside.com 2019 - 2024. All rights reserved.