Python Flask定时排队脚本
Python Flask timed queuing script
我刚开始使用 Flask,我正在创建一个 Web 应用程序,该应用程序在服务器端执行两项主要操作:访问另一个在线 API(我每秒只能向其发送这么多请求)和发送对连接到服务器的用户的页面请求。
当用户连接到我的 Flask 服务器时,它会向用户的浏览器发送一个页面,然后该页面上的 AJAX 脚本会用数据填充该页面(这是为 UI 完成的表现)。这个数据来自另一个API(英雄联盟API),但是我每秒可以调用的次数有限制,所以我必须做一个排队脚本。
目前,我计划在每次调用后使用 time.sleep()
函数,但我担心这会阻止服务器执行任何其他操作。我仍然希望服务器在 API 调用被延迟时响应页面请求。
为此,我应该使用多处理,还是 Flask 有内置的东西来处理这个?或者我应该为此安装一个特定的插件吗?
谢谢!
我认为推荐的方法是使用异步任务 queue/job,例如 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)
它具有许多特性和功能,可以为您完成这项工作。您可以参考文档以获取更多信息。
我刚开始使用 Flask,我正在创建一个 Web 应用程序,该应用程序在服务器端执行两项主要操作:访问另一个在线 API(我每秒只能向其发送这么多请求)和发送对连接到服务器的用户的页面请求。
当用户连接到我的 Flask 服务器时,它会向用户的浏览器发送一个页面,然后该页面上的 AJAX 脚本会用数据填充该页面(这是为 UI 完成的表现)。这个数据来自另一个API(英雄联盟API),但是我每秒可以调用的次数有限制,所以我必须做一个排队脚本。
目前,我计划在每次调用后使用 time.sleep()
函数,但我担心这会阻止服务器执行任何其他操作。我仍然希望服务器在 API 调用被延迟时响应页面请求。
为此,我应该使用多处理,还是 Flask 有内置的东西来处理这个?或者我应该为此安装一个特定的插件吗?
谢谢!
我认为推荐的方法是使用异步任务 queue/job,例如 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)
它具有许多特性和功能,可以为您完成这项工作。您可以参考文档以获取更多信息。