【发布时间】:2020-04-18 15:53:41
【问题描述】:
我正在使用 Flask 构建一个网络应用程序,并且有一个与哲学/架构相关的问题,想问所有比我更有经验的人。
用户在我的应用中输入一些基本的搜索条件,然后我的应用会查询多个 3rd 方 API 以获取与条件相关的信息并汇总结果。
最终,我的应用程序将每两周向用户发送一封电子邮件,其中包含一个 HTML 格式的表格,其中包含 API 查询收集的信息(作为表格中的行)。这些信息不需要长期存储,一周左右就会过时,因此存储它真的没有意义。第 3 方 API 将始终每周左右重新查询。
最初我认为我需要为每个用户维护一个数据库表,该表将聚合和存储他们特定 API 查询的结果。我计划从数据库中的行创建电子邮件表的内容。
我现在想知道是否有一种方法可以在不使用数据库在发送电子邮件之前临时存储 API 查询的结果的情况下完成所有这些工作。
我的问题:完成我想做的事情的最有效或最佳方式是什么?是否可以在没有用于存储 API 查询结果的数据库的情况下执行此操作?
这里回顾一下最初概念的操作顺序:
应用程序查询 API 获取信息 --> 应用程序将 API 返回的数据存储在 DB 表中 --> 应用程序将 DB 表中的信息放入格式化的 HTML 表中 --> 应用程序通过电子邮件将 HTML 表发送给用户 --> 下次应用程序查询将被覆盖的数据库表的 API。
这里是我正在使用的不同包:
烧瓶 1.1.1 werkzeug 0.15.5
用于开发和生产的应用服务器。
独角兽 19.9.0
测试和静态分析。
pytest 5.1.0 pytest-cov 2.7.1 模拟 3.0.5 flake8 3.7.8
数据和工作人员。
psycopg2-二进制 2.8.3 Flask-SQLAlchemy 2.4.0 SQLAlchemy 1.3.7 蒸馏器 1.0.11
redis 3.3.7 芹菜 4.3.0
表格。
Flask-WTF 0.14.2 WTForms-组件 0.10.4 WTForms-Alchemy 0.16.9
付款。
条带 2.35.0
实用程序。
伪造者 2.0.0
扩展。
烧瓶调试工具栏 0.10.1 烧瓶邮件 0.9.1 烧瓶登录 0.4.1 烧瓶限制器 1.0.1 Flask-Babel 0.12.2 Flask-Static-Digest 0.1.2
【问题讨论】:
-
您可以将 API 调用的结果缓存在像 redis 这样的键/值存储中
标签: python database flask architecture web-development-server