Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Flask app中没有传入请求时连续打印内容_Python_Flask - Fatal编程技术网

Python 在Flask app中没有传入请求时连续打印内容

Python 在Flask app中没有传入请求时连续打印内容,python,flask,Python,Flask,我有一个简单的flask应用程序,当没有请求传入时,我需要连续打印“无传入请求”,到特定路线。有谁能帮我解决这个问题吗你想实现的有趣的事情:)。这是我编写的工作脚本。当然会有一些修改,使其符合您所寻求的,但总体方案在我看来是合理的 from flask import Flask import threading import time app = Flask(__name__) class Printer(object): def __init__(self, time_to_s

我有一个简单的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退出时线程处于活动状态。否则脚本将挂起,因为该线程不是守护进程线程,因此将使进程保持活动状态。

当您说必须“打印到特定路由”时,您的确切意思是什么?假设在根(/)没有传入请求,那么我想在控制台上连续打印“无传入请求”我正在努力理解它的用途,但我想有一个:)当你收到一个请求时,为什么不打印一些东西,然后假设如果没有打印出来,就没有“传入请求”?:)基本上,我是通过端点将flask应用程序与TCP传入数据连接起来的。请求将在flask内处理,然后流式传输到另一台服务器。因此,如果有来自TCP端口的请求传入,并且没有请求时“没有传入请求”,或者如果当前时间和上次请求时间之间的时差超过5分钟,我需要向远程服务器发送请求正文。您能解决您的问题吗?谢谢先生。让我检查一下,让我知道:)我很好奇你所做的任何改进,所以我也学习了。只是补充了一些东西。非常感谢:)