gpt4 book ai didi

python - 如何每秒运行一次与 Flask 上的请求分开的函数?

转载 作者:行者123 更新时间:2023-11-28 22:45:06 26 4
gpt4 key购买 nike

我正在 Flask 中开发一个简单的 API,它不是 REST 或任何东西。

有一个模块返回列表中的实时数据。

有问题的模块

# module.py
def get_data():
do_something()
return [info_from_somewhere, info_from_other_place]

还有应用

# app.py
import module

@app.route('/')
def get_data():
return jsonify(data=module.get_data()[0])

问题是,每次有人请求该路由时,这都会运行该函数。由于数据只有一个,所以我想为每个请求提供它,但只运行一次该函数。

编辑:我试过这个:

got_data = module.get_data()

@app.route('/')
def get_data():
return jsonify(data=got_data[0])

有效,但不刷新列表。所以我的问题是“我怎样才能每秒刷新一次?”我试过 sleep ,但它卡住了我的应用程序

最佳答案

您可以使用 celery 实现此目的.来自项目页面。

Celery is an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.

其他解决方案可以通过产生一个线程来完成,该线程将每秒更新一次数据,但这可能会很快变得棘手。

from threading import Timer
from flask import Flask

app = Flask(__name__)
DATA = "data"

def update_data(interval):
Timer(interval, update_data, [interval]).start()
global DATA
DATA = DATA + " updating..."

# update data every second
update_data(1)

@app.route("/")
def index():
return DATA

if __name__ == "__main__":
app.run(debug=True)

关于python - 如何每秒运行一次与 Flask 上的请求分开的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com