【问题标题】:How to make 1 get request everyday?如何每天发出 1 个请求?
【发布时间】:2019-11-11 05:19:47
【问题描述】:

我有一个网络应用程序,我想每天为所有用户显示一个报价。

我正在使用https://theysaidso.com/api/ API。

每小时有 10 个请求的限制,我只需要每天发出 1 个请求并显示所有用户的报价。

我将请求的范围设置为全局并且它正在工作,但我认为它明天不会改变,除非我重新运行代码,我不能每天都这样做。

是否有解决方案,还是我必须寻找另一个没有请求限制的 API 并在每次用户访问主页时发送请求?

我使用 Flask 作为后端。

【问题讨论】:

  • 你能缓存结果并且只在超过一天的情况下使缓存失效吗?
  • crontab 或其他任务调度器可能
  • @quamrana 我是个新手,你能告诉我怎么做吗?
  • 这能回答你的问题吗? Python in-memory cache with time to live
  • @JoshKarpel 这现在有效,但我会知道明天报价应该改变时它是否真的有效。

标签: python flask python-requests


【解决方案1】:

一般来说,服务器应该发送请求,然后保存或缓存报价。在我看来,缓存更有意义。

我认为有两种方法。

  1. 使用 crontab 或其他调度工具从服务器发送调度请求(crontab 最简单,我认为它足以胜任这个标题)并将其保存在数据库中或缓存在 Redis 中。
  2. 使用一些缓存(我建议使用 Redis),当用户请求报价时,检查 Redis 是否有它。如果没有 Redis 实体,则发送请求(来自服务器)以引用 api 并缓存 Redis 中剩余时间的 TTL。然后将报价返回给用户。

【讨论】:

  • 我不知道这些,所以我会阅读它们并尝试一下。谢谢!
  • 如果python带有redis库,你可以连接到redis服务器。使用 redis.set(key, value, time_to_live) 您可以将带有 time_to_live 的键设置为 TTL(定义该键将存在多少秒的数字)。当 TTL 秒数已经过去时,redis.get(key) 的输出为 none,否则输出将为 value
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2023-03-20
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多