Python Flask定时排队脚本

时间:2016-05-08 18:55:46

标签: python flask riot-games-api

我刚开始使用Flask,我正在创建一个服务器端执行两个主要功能的Web应用程序:访问另一个在线API(我每秒只能发送这么多请求)并将页面请求发送到用户连接到服务器。

当用户连接到我的Flask服务器时,它会向用户的浏览器发送一个页面,然后该页面上的AJAX脚本将使用数据填充页面(这是为了UI性能)。这些数据来自另一个API(英雄联盟API),但是我每秒可以调用的数量设置了一个速率限制,因此我必须制作一个排队脚本。

目前,我计划在每次通话后使用time.sleep()功能,但我担心这会阻止服务器执行任何其他操作。我仍然希望服务器在API调用被延迟时响应页面请求。

为此,我应该使用多处理,还是Flask内置了一些东西来处理这个问题?或者我应该为此安装特定的插件吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为推荐的方法是使用异步任务队列/作业,例如 celery

使用它非常简单,只需要将@ app.task放在需要在后台运行的函数中:

from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

result = add.delay(2, 2)

它具有许多功能和特性,它将为您完成工作。您可以参考文档了解更多信息。