我正在构建一个Flask扩展,需要在调用init_app
- 方法时创建一个临时文件夹。我打算使用Python的内置tempfile.mkdtemp()
- 但是,当Flask应用程序停止/拆除时,我需要删除临时目录。
这样做的正确方法是什么?
我认为应该有某种init_app
- 方法的反转。
答案 0 :(得分:0)
没有拆解;通常Flask服务器应该“永远”运行。
将其留给操作系统删除临时目录或注册atexit
handler以清除任何此类目录。
请注意,这取决于您的WSGI服务器分支模型的安全性。一些服务器在加载Python模块后分叉子进程,因此任何全局变量都在这些进程之间共享。如果您在全局级别创建了临时目录(而不是在Flask before_first_request
挂钩中),那么您最终可能会遇到所有共享同一临时目录的子进程,但每个被收获的子进程都会触发atexit
处理程序。您可能需要针对此案例进行防御性编码。