gpt4 book ai didi

python - 在 Flask 应用程序中没有传入请求时连续打印一些内容

转载 作者:行者123 更新时间:2023-12-01 02:56:46 26 4
gpt4 key购买 nike

我有一个简单的 flask 应用程序,当没有传入请求时,我需要连续打印“无传入请求”到特定路由。谁能帮我解决这个问题

最佳答案

你想要实现的有趣的事情:)。这是我整理的工作脚本。当然需要进行一些修改才能将其弯曲到您所寻求的目标,但总体方案对我来说似乎是合理的。

from flask import Flask
import threading
import time

app = Flask(__name__)


class Printer(object):

def __init__(self, time_to_sleep):
self.lock = threading.Lock()
self.tts = time_to_sleep
self.go_on = True

def do_print(self):
print "{}: no incoming requests".format(time.time())

def loop(self):
while self.go_on:
time.sleep(self.tts)
with self.lock:
self.do_print()

def exit(self):
self.go_on = False


printer = Printer(1)


def lock_acquire(func):
def __inner__(*args):
with printer.lock:
res = func(*args)
return res
return __inner__


@app.route('/')
@lock_acquire
def hello_world():
time.sleep(5)
return 'Hello, World!'


def run_app():
host = "localhost"
app.run(host=host, debug=1, use_reloader=False)


if __name__ == "__main__":
t = threading.Thread(target=printer.loop,
name="looper")
t.start()
run_app()
printer.exit()

因此,您有一个线程定期获取锁并打印一条消息。路由 api 端点包装在一个函数中,该函数首先获取此锁(防止打印线程打印)并在完成后释放它。另一件重要的事情是在循环中添加一个控制流变量 (go_on),以便在使用 Ctrl-C 退出时不使线程保持事件状态。否则脚本将挂起,因为该线程不是守护线程,因此会使进程保持事件状态。

关于python - 在 Flask 应用程序中没有传入请求时连续打印一些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44156152/

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