初始化完成后如何在Flask APP中运行代码(“在htttp://127.0.0.1:5000 / ...上运行)

时间:2019-07-12 13:19:43

标签: python flask webdriver runtime

我正在编写一个Flask应用程序,以便在本地计算机上运行并执行某些操作。我希望我的flask应用程序在完成初始化后自动打开Web浏览器。问题是,当我将它们打包在一起时,有时Web驱动程序的加载速度比Flask APP能够初始化的速度快得多。

我尝试了时间延迟和线程,但是在大多数情况下,我一直得到不一致的结果。我已经尝试过使用Flask的@before_first_request,但这仍然是从浏览器发出请求之后。

if __name__ == '__main__':

    port = 5000 + random.randint(0, 999)
    url = "http://127.0.0.1:{0}".format(port)

    options = webdriver.ChromeOptions()

    # options.add_argument("--start-maximized")
    options.add_argument("--kiosk")
    options.add_argument("disable-infobars")

    browser = webdriver.Chrome(chrome_options=options)
    # threading.Timer(5, lambda: browser.get(url)).start()
    browser.get(url)

    app.run(port=port, debug=Flase)

我希望实际的网络驱动程序在Flask完成初始化后即可打开。我不能将它放在app.run之后,因为它会启动烧瓶“循环”,并且不会执行。 Flask完全初始化但尚未接受任何请求后,是否可以运行任何功能?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

一旦Flask完全初始化但尚未接受任何请求,是否有任何要运行的功能?

尝试为before_first_request注册一个回调:

@app.before_first_request
def run_browser():
    # ...

https://flask.palletsprojects.com/en/1.0.x/api/#flask.Flask.before_first_request