【发布时间】:2021-02-11 09:54:30
【问题描述】:
我每晚都使用 API 将大量数据同步到我的应用。 API 本身使用回调系统,所以我向他们的 API 发送请求(包括 webhook URL),当数据准备好时,他们会向我的 webhook 发送通知,告诉我再次查询 API 以获取数据。
问题是,这些回调以很高的速度(每分钟数千个)涌入我的 webhook,这给我的 Flask web 应用程序(托管在 Heroku dyno 上)带来了极大的压力,并导致最终用户出错。 Webhook 本身已简化为将消息转发到 RabbitMQ 队列(在单独的 dyno 上运行),然后以自己的速度逐步处理它们。不幸的是,这似乎还不够。
我还能做些什么来管理这个负载吗?是否可以在与应用程序面向公众的部分不同的测功机上运行特定的 URL(或一组 URL)?即有两个网络测功机?
谢谢
【问题讨论】:
-
我已经通过 HireFire 为我的应用设置了自动缩放功能,但是对于本质上是工作任务的 Web dyno 进行缩放感觉并不理想。