python - Python Flask 生成文本文件
问题描述
我有一个简单的烧瓶应用程序,它运行一些后端函数,这些函数从一堆不同的地方获取检索数据,并将该数据添加到文本文件中。然后,我正在阅读所有文本文件并将它们交给页面。我这样做是这样的:
@app.route("/metrics", methods=["GET"])
def metrics():
def generate():
Metrics.GetMetrics().metrics()
settings = get_config()
metrics_folder = settings['settings'].get('metrics_folder', '/opt/metrics/')
all_metrics = []
for filename in os.listdir(metrics_folder):
if filename != '.gitignore':
m = open(metrics_folder + filename)
for l in m.readlines():
all_metrics.append(l)
for metric in all_metrics:
yield metric
return Response(stream_with_context(generate()), mimetype='text/plain')
这工作正常,但我正在使用的文件数量不断增加(高达 38k),我已经开始注意到速度变慢了。我想知道是否有比我更聪明的人对如何更有效地做到这一点有任何想法或提示?也许与多处理有关?或者可能是一种方法来找出目录中的所有文件并同时将它们全部扔到网页上,而不是使用stream_with_context?谢谢!
解决方案
是的,如果无法将所有内容都放在一个数据库中,我同意您的看法,并且您确实需要检查多个文件,然后将其编译成一个文本文档等,我会研究异步编程,否则它将继续一次执行一个命令并花一些时间:https ://realpython.com/python-async-features/
如果您需要链接才能开始使用。
推荐阅读
- javascript - 如何从 CFC 结果填充 Jquery 数组和 DOM 对象
- c# - 将 IText7 转换为 base64 C#
- r - ggplot2中简洁的类似xlims和ylims
- javascript - 如何在用户离开选项卡或关闭屏幕后检测浏览器何时限制计时器和 websockets 断开连接?(javascript)
- python - 递减一张图片蓝色通道的所有奇数值
- javascript - Vuetify 数据表条件列渲染
- python - 为什么我不能把这个字符串变成正确的列表
- javascript - JS中从分数到排行榜排序字典
- android - 这里映射 sdk 来反应原生组件
- angular - Angular 小吃店服务茉莉花测试