我试图使用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”功能有着完全相同的代码。那么,为什么我无法创建调用一个函数,一个守护进程?
这有没有关系守护进程。 main
没有获得my_file
;你没有在传递文件作为参数或任何东西。
在第二个例子中,main
函数引用my_file
这是不是在该函数的范围。
def main():
my_file.write("Daemon creation was successful")
my_file.close()
该函数将(如果你的例子是完整的)提高了NameError
名my_file
。
纠正的方法之一就是让my_file
main
的参数。