如何使用flask返回回调函数中的响应

时间:2018-04-25 02:39:35

标签: python flask

这里是一个dll,可以比较面部距离,而compareFace.dll,我需要使用回调来接收它的值

现在,我想使用flask来包装它,然后可以通过http和json访问

dashedBorderView: {
    position: 'absolute',
    bottom: 35,
    left: 45,
    top: 50,
    right: 0,
    borderLeftWidth: 1,
    borderBottomWidth: 1,
    borderColor: '#dfdfdf',
    borderStyle: 'dashed',
  },

运行代码,我收到错误dashedBorderView: { position: 'absolute', bottom: 35, left: 45, top: 50, right: 0, borderWidth: 1, borderColor: '#dfdfdf', borderStyle: 'dashed', },

我知道,我应该写一个返回'xxx'作为回复

但是,我想等待回调函数,并在回调函数中返回响应,所以我应该如何修改我的代码,谢谢。

1 个答案:

答案 0 :(得分:0)

让我们看一个简单的场景:

  1. 用户提供他/她的用户名。
  2. 我们的函数根据用户名计算一个值。使用time.sleep函数将此虚拟调用作为耗时的调用。
  3. 用户在操作完成后收到值。
  4. 这可以通过使用以下代码来实现。

    app.py

    import time
    from flask import Flask, request, render_template
    
    app = Flask(__name__)
    
    @app.route('/', methods=["GET", "POST"])
    def index():
        username = None
        value = 0
        if request.method == 'POST':
            username = request.form.get("username", None)
    
        def calculate_value_based_on_username(user_given_name):
            time.sleep(10)
            return len(user_given_name)
    
        if username:
            value = calculate_value_based_on_username(username)
            return render_template('app.html', username=username, value=value)
        return render_template('app.html')
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    app.html

    <html>
      <head></head>
      <body>
        {% if username %}
          Hello {{ username }}! Length of your username: {{ value }}
        {% else %}
          Hello guest! 
        {% endif %}
        <form action="/" method="post">
          Username: <input type="text" name="username">
          <input type="submit" name="submit" value="Submit">
        </form>
      </body>
    </html>
    

    输出:

    output