我有一个Flask应用程序在apachehttpd后面运行。Apache配置为具有多个子进程。在
Flask应用程序在服务器上创建一个文件,文件名等于其进程ID。 代码如下所示:
import os
@app.before_first_request
def before_first_request():
filename = os.getpid()
with open(filename, 'w') as file:
file.write('Hello')
当子进程被终止/结束/终止时,我希望Flask应用程序删除此文件。在
删除一个文件并不十分重要,因为这些文件不会占用太多空间,所以如果发生奇怪的错误,我不需要处理它们。但是对于正常的工作流,我希望在Apache关闭Flask进程时进行一些清理。在
有什么好办法吗?在
最简单的方法是在Apache进程之外处理这个问题。无法保证进程始终删除文件(例如,如果重新启动apache服务器mid请求)。在
我过去采用的方法是使用
cron
。在存储库中的某个地方编写一个小脚本,并按计划执行(通常每天都可以)。此脚本可以清除目录中超过24小时的所有文件,因此您将始终有一个滚动窗口,其中包含1天的文件。在这有两个好处:
大多数脚本语言都有一个小包装类,可以用来使
cron
更友好。Ruby最流行的是whenever。在在服务器控制的Python进程(例如在apachewsgi上下文中运行的Flask应用程序,或者更好地,在Apache背后的Gunicorn中运行)之前添加清理功能的最佳方法是使用^{} 退出处理程序。在
在您的原始示例中,添加了用于清理
.pid
文件的退出处理程序:相关问题 更多 >
编程相关推荐