【发布时间】:2016-02-08 15:29:53
【问题描述】:
我有一个使用 Flask 框架公开的 Web 服务。
该服务作为外部API使用,每秒调用次数有限制。
在正常情况下,对我的 API 的多次调用会导致生成多个线程并调用外部 API,而对每秒的请求数没有任何控制。
有没有一种方法可以让我对 Web 服务的请求进行排队,然后以节流的方式调用外部 API。
也欢迎任何其他想法。
编辑:
【问题讨论】:
-
超过请求时您希望发生什么?您希望阻止对您的 API 的请求吗?或者你会回复你自己的
http 429回复吗? -
我希望对我的 API 的请求在需要时等待。 (排队可能是!?)并在我可以满足外部 API 的每秒请求标准时返回结果。如果调用我的请求需要几秒钟才能返回,我没有问题。
-
Celery 通常用于从 Web 请求中启动长时间运行的进程。通常,除了知道请求进入 celery 队列之外,您的客户不会得到有用的回复,除非您实际上正在做一些事情以在 celery 任务完成时提醒您的客户,例如向他们发送电子邮件或发送他们使用 socket.io 或其他东西的消息。
标签: python web-services flask webserver rate-limiting