1

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

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

目前,我计划在time.sleep()每次调用后使用一个函数,但我担心这会阻止服务器做任何其他事情。我仍然希望服务器在 API 调用被延迟时响应页面请求。

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

谢谢!

4

1 回答 1

1

我认为推荐的方法是使用像芹菜这样的异步任务队列/作业

使用起来很简单,你只需要把@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)

它具有许多特性和功能,它会为您完成这项工作。您可以参考文档以获取更多信息。

于 2016-05-09T09:53:48.987 回答