python-如果被函数调用,守护进程不工作
python-daemon does not work if called by function
我正在尝试使用 python-daemon 库生成一个将写入文件的守护进程。
当我直接在"if __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()
该函数将(如果您的示例完整)为 my_file
名称引发 NameError
。
一种更正方法是使 my_file
成为 main
的参数。
我正在尝试使用 python-daemon 库生成一个将写入文件的守护进程。
当我直接在"if __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()
该函数将(如果您的示例完整)为 my_file
名称引发 NameError
。
一种更正方法是使 my_file
成为 main
的参数。