【问题标题】:Running multiple functions without closing Flask server [duplicate]在不关闭 Flask 服务器的情况下运行多个功能 [重复]
【发布时间】:2021-05-03 15:07:23
【问题描述】:

我有一个 Flask 应用程序,它接收用户输入,然后将该输入传递给程序中的其他函数。我的问题是除非我关闭 Flask 并关闭服务器,否则其他功能将无法运行。我将如何保持服务器正常运行并调用函数?基本上,一旦用户点击“提交”,我希望所有功能都运行。

启动烧瓶应用

app.run(host = '127.0.0.1', threaded = True)

将变量传递到 HTML 表单输入

@app.route('/server_app', methods=["POST"])
def server_app():
    global set_freq, set_center_freq
    set_freq = request.values.get("set_freq")  # <--- do whatever you want with that value
    set_center_freq = request.form.get("set_center_freq")
    return render_template("main_page.html")

然后调用测试函数,它现在所做的只是打印变量之一,但它不会运行,直到我使用控制 c 并关闭服务器。


    def test_fun(set_freq):
        print(set_freq)

    #main
    app.run(host = '127.0.0.1', threaded=True)
    test_fun(set_freq)

只有在我手动停止烧瓶服务器运行时,它才会运行“test_fun”。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    很高兴认识你。如果你想运行一个函数,你应该能够定义它并使用 def 运行它,然后在获取数据时运行它。如果有些东西不起作用,您可以专门更新您的问题。例如,您要运行什么功能? 所以这里有一些代码来配合它

    #Dependencies
    from flask import Flask,render_template,session,redirect,url_for,jsonify,send_from_directory
    
    
    # App stuff
    app = Flask(__name__)
    def test_fun(set_freq):
        print(set_freq)
    #Routers
    @app.route("/",methods=["GET"])
    def home():
        return render_template("index.html")
    
    @app.route('/server_app', methods=["POST"])
    def server_app():
        global set_freq, set_center_freq
        set_freq = request.values.get("set_freq")  # <--- do whatever you want with that value
        set_center_freq = request.form.get("set_center_freq")
        test_fun(set_freq)
        return render_template("main_page.html")
    
    
    
    #Run
    if __name__ == "__main__":
        app.run(host="0.0.0.0",port=5000)
    

    【讨论】:

    • 我为您更新了问题。测试功能仅在我手动停止 Flask Web 服务器后运行。在服务器继续运行时填充变量后,我需要运行该函数。
    • 好的,这更有意义。这是以前的问题,应该会有所帮助。如果它不能解释足够的事情,请在这里再问一次,我很乐意为您提供帮助。stackoverflow.com/questions/27465533/…
    • 老实说,它们看起来并不像最干净的代码。我会做什么,这可能不是最好的解决方案,如果它在第一个请求被调用时是正确的。有一个全局变量,说明它是否是第一个请求,然后执行。顺便说一句,这仅在该功能不需要太多时间的情况下才有效。祝你好运,如果你需要帮助,这里有一些我不久前写的烧瓶模板:github.com/shoryamalani/templates/tree/master/flask
    • 我的问题是我需要等到输入输入,基本上我必须启动服务器,接受输入,然后运行其他功能,同时服务器仍在运行。
    • 啊,明白了。所以基本上你想要做的是从你的 def home() 调用函数:这只是一个例子,但你明白我的意思如果你不这样做,我可以为你编写代码
    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2017-08-18
    • 1970-01-01
    相关资源
    最近更新 更多