我的烧瓶持续收到请求,但我想将它们忽略,直到我完成后台执行的函数。

2024-10-03 19:19:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Flask,到目前为止,我已经完成了编写一段simole代码,它接受请求并在后端执行Python函数

问题是这个后端Flask程序每2秒就收到一次请求,而我为每个请求运行的后端函数花费的时间远远超过2秒

我想确保只有在我知道我已经完成了后端的Python函数之后,我才接受请求。在后端Python函数执行时,有没有一种方法可以一直忽略请求


Tags: 方法函数代码程序flask时间花费simole
1条回答
网友
1楼 · 发布于 2024-10-03 19:19:57

这是一个奇怪的请求,人们通常希望他们的web应用程序一次提供更多的请求,而不是更少的请求

你完全可以把一些东西放在一起达到你描述的效果。我不明白你为什么要这么做

您可以将一个标志存储在某处(内存缓存、数据库、文件等中),可能名为“busy”,即“true”或“false”。当我们不忙的时候,我们会接受请求,当我们忙的时候,我们会告诉用户去一个真正的网站

使用Redis的简单模拟,内存中的数据存储:

from flask import Flask
import redis

APP = Flask(__name__)
redis_db = redis.StrictRedis(host="localhost",
                             port=6379,
                             db=0)
redis.set('we_are_busy', 0)


@APP.route('/perform_task')
def perform_task():
    if redis.get('we_are_busy') == 1:
        return 'Go away, we\'re busy!', 503
    else:
        redis.set('we_are_busy', 1)
        some_heavy_task()
        redis.set('we_are_busy', 0)
        return 'we are done with your task'


def some_heavy_task():
    # some rocket science
    pass

在现实生活中,不能一次运行多个任务的繁重任务存储在任务队列中并按顺序运行。如果你对此感兴趣,我建议你研究一下Celeryrq

相关问题 更多 >