【发布时间】:2018-03-02 16:56:14
【问题描述】:
我正在编写这个 API,它是 slack bot 应用程序的后端,许多用户都会使用它。在我的 api 中的一个 API 端点中,我正在调用一个外部 API 来获取一些数据,以便我可以在我的 API 中对其进行按摩以将其发送给 BOT/用户。但是我正在进行的外部 API 调用非常昂贵(~5 / ~10 秒)。我注意到,当我同时访问我的 API 端点两次或更多次时,有时我没有得到任何数据。只有一个调用成功。有什么办法可以解决这个问题吗?我一直在研究工作队列,但不确定它是否为此矫枉过正。
我正在使用多路复用器进行路由。
【问题讨论】:
-
所有请求已经在单独的 go 例程中同时处理。因此,无论您遇到什么问题,都不是因为缺乏并发性。不过,如果没有看到您的代码,就很难猜出问题所在。
-
确保您在 http 请求的整个生命周期中都没有持有互斥锁。有时,人们这样做会有效地将您的并发性限制在一个 goroutine 上。
-
哪些请求失败了?来自机器人的请求,还是您对第三方 API 的请求?
标签: multithreading go concurrency goroutine mux