API调取FTP遍历程序抓取文件
嗯,我觉得之前这个还是有些慢。API调用的方式触发程序的调用 | Haha not only a lot
先前的逻辑,还是要调用api接口,触发遍历程序执行。这样如果着急要找某个文件,其实还是要等待一段时间的。
突然某个时间点,我开窍了:
既然我都可以遍历FTP全盘了,可以识别到文件,那为什么不索性把所有文件扫到后,直接把文件的绝对路径保存。需要调取某个文件时,直接去保存的记录里检索这个文件的绝对路径,然后实时下载下来,再返回到调用的客户端。
这样子的话,就可以实时调取了。
但是这个的前提是:FTP里原有的文件相对稳定,文件所在的目录不会经常变。FTP新增文件和目录的频率不是很快。
然后同步配合定期去遍历一遍FTP全盘,标记所有文件出来就可以了。
其实之前我最最帅气的大强哥,和我建议过这么设计。我也想到过。
但是我觉得做到这个程度,有点太过了。
因为本身我是希望这部分海量的文件,通过更合理的文档管理理念去做管理,对文档定义标签,做分类和规划使用。但是呢,我又没有做这个决定的能力。
所以这个FTP抓文件的逻辑和操作,做的越便捷,一定程度上,就扛住了部分文档管理的功能……我希望的是更系统的规划这个事情……
不过最后,我还是这么做了。
可能就是希望做得更好一点,然后就弄了。
🤔🤔🤔🤔🤔🤔🤔
设计和代码就会简单很多了。
- 因为我已经有遍历的程序了,逻辑我认为写的也很完善了。我只需要执行那个程序,查找的文件是一个实际肯定不存在的,那程序就是会遍历全盘去找他。然后找到最后,所有的文件都识别出来后,将文件和绝对路径,写到个json文件里保存。
- API增加2个方法:一个方法是触发全盘检索程序,这样可以间隔一周调用这个方法,更新一下FTP内所有的文件及其地址。一个是直接给文件名做入参,调用即去上步保存的json里去找,然后调用文件下载。
200多万的文件,json里存的键值对就有200w个。我试了下,直接查字典,效率还可以接受。也可以存在数据库表里,但是查询效率不知道会不会提升很多。
1 | # 加载json文件,加速检查文件是否定位到,定位到则即刻调取文件。 |
最终,实现的效果,
文件不存在,会提示:
文件存在,则直接调取到文件:
应该就这样子了,这个FTP的东西,暂时应该就搞到这个程度了吧。
是真的费脑子。
也有接触新的python三方库,有收获的。
🧐🧐🧐🧐🧐🧐🧐