【问题标题】:Python flask server taking long time to bootPython烧瓶服务器需要很长时间才能启动
【发布时间】:2018-12-05 02:19:34
【问题描述】:

我有一个奇怪的问题,当我在 PyCharm 中或通过控制台 (python script.py) 运行下面的代码时,烧瓶服务器需要很长时间才能启动,这意味着在尝试访问它时它没有显示任何内容好几分钟。

import threading
from flask import render_template, request, logging, Flask, redirect

def setupFlask():
    appn = Flask(__name__)
    log = logging.getLogger('werkzeug')
    log.setLevel(logging.ERROR)


    @appn.route('/')
    def page():
        return render_template('index.html')


    @appn.route('/submit', methods=['POST'])
    def submit():
        token = request.form['ID']
        ID = token
        return redirect('/')

    appn.run()
a = threading.Thread(target=setupFlask)
a.daemon = True
a.start()
while True:
    pass

奇怪的是,当我在 PyCharm 调试器中运行上面相同的代码时,flask 服务器需要大约 5 秒才能启动,比在控制台中运行时的几分钟要快得多。在正常运行脚本时我会喜欢这种速度,并且由于在调试器中修复自身的问题而无法找到解决方案! 这段代码 sn-p 是一个更大的应用程序的一部分,但是我已经将它调整为独立运行,并且发生了同样的问题。 我没有在 virtualenv 中运行。 感谢所有帮助。

编辑:index.html 文档非常基本,只包含一些脚本和元素,因此我看不出它需要很长时间才能加载。

【问题讨论】:

  • 这很奇怪。它应该总是像 5s。你如何在控制台上运行我?
  • @Frynio 确实......我在一个线程中运行上面的函数,并在控制台中执行正常的“python script.py”。在 PyCharm 中运行时会出现同样长的启动时间。我将稍微编辑问题以使其更有意义。
  • 你使用 virtualenv 吗?顺便说一句,你的进口很奇怪。我会一直from flask import Flask,你的代码 f.e 对我不起作用
  • 您的代码示例是完整的脚本还是被编辑了?您正在守护线程中运行 Flask 应用程序,这表明主线程中发生了更多事情,否则该进程将在 a.start() 之后退出
  • @Frynio 我将尝试重新安装 python 和旧学校中的模块尝试修复看到,因为您没有遇到相同的行为!

标签: python python-3.x flask webpage


【解决方案1】:

问题在于您的Flask 安装,但还有另一个问题。您不应该使用while 循环等待您的线程。更好的方法是join你的线程,像这样:

a = threading.Thread(target=setupFlask)
a.daemon = True
a.start()
a.join()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2021-02-28
    相关资源
    最近更新 更多