我正在写这个API,它是松弛bot应用程序的后端,将被许多用户使用。在我api的一个API端点中,我正在调用一个外部API来获取一些数据,因此我可以在我的API中对其进行按摩以将其发送给BOT/用户。但是我进行的外部API调用非常昂贵(〜5/〜10秒)。我注意到,当我同时两次或多次击中我的API端点时,有时我没有任何数据。只有一个调用成功。有什么办法可以解决这个问题?我一直在研究 worker 队列,但不确定是否为此而过度。

我正在使用多路复用器进行路由。

最佳答案

如果您想比外部API更快地处理请求,则需要将出站调用与传入请求分开,并进行某种缓存。例如,您可以:

  • 运行一个工作程序,该工作程序调用您的外部API并将结果存储在缓存中
  • 您是否从缓存
  • 请求处理程序拉
  • 如果数据是最新的,则将其返回
  • 如果数据太旧,请等待刷新缓存,然后使用新数据

  • 如果这是24/7全天候服务,则工作人员可以按需要的频率按重复计划刷新缓存。或者,您可以让请求处理程序将一条消息排队到高速缓存工作器中,以表明需要刷新高速缓存,以便当您没有收到请求时,它不会继续访问外部API。

    关于multithreading - 一次处理多个GET请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49073785/

    10-11 22:59
    查看更多