折腾:
期间,想要实现:
保存临时文件,且能设置有效期,过期自动删除的效果
现在去研究,是否可以用临时文件的方式去实现
flask save data to tmp file
10.6. tempfile — Generate temporary files and directories — Python 2.7.15 documentation
好像是可以利用python中的tempfile去实现:
把mp3音频,保存到临时文件中
-》可以供外部访问?
但是好像不太好解决:
临时文件的有效期问题,和路径的问题
好像可以把api设计成:
file/tmp/tmpFileId/tmpFileName
的形式
然后再去根据tmpFileId去:
如果能找到的话:去tempfile返回对应的文件:
如果找不到,返回错误
python – Saving temporary file for plotting audio waveform – Code Review Stack Exchange
而对于临时文件的话:
是否是需要自己去控制和删除掉?
如果是的话,那么就麻烦了
因为暂时没有合适的时机去触发而删除掉某个临时文件
还是系统自动会清理掉临时文件?
如果是的话,那就简单了
就不用自己去考虑什么临时文件的有效期了,系统如果清理掉就清理掉,算了,无所谓,可以重新生成
flask 如何保存临时文件 有效期
flask save temporary file
[求助] Flask 如何实现 ajax 提交数据,后端生成 csv 文件并显示文件下载 – V2EX
好像可以:
保存在某个服务器的路径下
但是Flask新建一个延时任务,然后比如10分钟后,调用这个延时任务,去删除掉之前保存的文件?
文件上传时$_FILES[‘XX’][‘tmp_name’]临时文件的有效期求解?-php教程_HTMLDIVCSS-教育学习资源网
python – Using tempfile to create pdf/xls documents in flask – Stack Overflow
“Use tempfile.mkstemp() which will create a standard temp file on disk which will persist until removed:”
好像是系统会帮忙自动维护,抽空垃圾回收会去删除?
Uploading Files — Flask 0.12.4 documentation
python – Read file data without saving it in Flask – Stack Overflow
python tempfile 保存期限
11.6. tempfile —生成临时文件和目录 – Python文档 – RD文档
Python模块学习:tempfile 临时文件(夹)操作 – Python – 伯乐在线
“tempfile.TemporaryFile([mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None]]]]])
该函数返回一个 类文件 对象(file-like)用于临时数据保存(实际上对应磁盘上的一个临时文件)。当文件对象被close或者被del的时候,临时文件将从磁盘上删除。”
但是我此处返回的临时文件后,并没有合适的时机去close
-》难道是rest api在返回之前
比如 open的作用域结束后,就返回了?
那岂不是rest api返回后,就没有了此文件了?
通过:
11.6. tempfile —生成临时文件和目录 – Python文档 – RD文档
“# create a temporary file using a context manager
>>> with tempfile.TemporaryFile() as fp:
… fp.write(b’Hello world!’)
… fp.seek(0)
… fp.read()
b’Hello world!’
>>>
# file is now closed and removed”
果然是的。。。
https://docs.python.org/2/library/tempfile.html
“tempfile.NamedTemporaryFile([mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None[, delete=True]]]]]])¶
If delete is true (the default), the file is deleted as soon as it is closed.”
那就设置delete=False
至少可以暂时返回临时文件了。
Python模块学习——tempfile – Jack.gao – 博客园
5.19 创建临时文件和文件夹 — python3-cookbook 3.0.0 文档
python – 从tempfile创建和读取 – 代码日志
tempfile要是支持临时文件带个有效期就好了,过了有效期自动删除
使用 Python 进行稳定可靠的文件操作 – 技术翻译 – 开源中国社区
【总结】
现在看下来貌似是:
对于此处CentOS的服务器,属于Unix/Linux
然后用
tempfile.NamedTemporaryFile(name=uniqueFileId, delete=False)
从而使得:
后续通过文件名(实际上是uuid之类的,防止重复的值)
然后(紧接着)继续访问返回到这个文件
而对于指定了delete为False,会不会导致:
存在于临时文件夹?中的临时文件,会大量积压,不会自动删除?
那Linux系统应该会去删除的才对。
但是,其实存在一个小风险:
创建了临时文件后,
紧接着系统,由于发现临时文件夹内容太多了或者其他原因,而对临时文件夹做了清理,导致刚刚创建对文件被删除了
这样后续rest api去访问文件,也是会找不到的
也是属于小bug
所以,为了方案更加健壮,还是暂时不考虑这个逻辑上有瑕疵的方案吧。
转载请注明:在路上 » 【调研】考虑用Python的临时文件实现保存临时文件且过期自动删除