nginx 中的随机函数失败

问题描述 投票:0回答:1

以下脚本尝试使用

python
运行
flask
随机模块。该应用程序在通过
gunicorn
:

提供服务时工作正常

gunicorn --bind 0.0.0.0:5000 wsgi:app

相反,当通过

nginx
允许Web请求时,验证失败。发生的情况是生成了一个新的秘密数字,从而导致输入的数字和存储的数字之间存在系统差异。

我的问题:

nginx
可能出了什么问题,而代码在
gunicorn
测试时工作正常?我不知道日志文件有任何错误。

Flask 视图

app = Flask(__name__)

def gen_secret_number():
    return random.randint(1, 100)
    
secret_number = gen_secret_number()

@app.route('/', methods=['GET', 'POST'])
def guess_number():
    
    if request.method == 'POST':
        entered_value = int(request.form['number'])

        if entered_value == secret_number:
            message = "Well done"
            return render_template('index.html', message=message)
        elif entered_value < secret_number:
            message = "Too small"
        else:
            message = "Too big"
        return render_template('index.html', secret_number=secret_number, message=message)

    return render_template('index.html', secret_number=secret_number, message=None)

@app.route('/reset', methods=['POST'])
def reset():
    global secret_number
    secret_number = gen_secret_number()
    return redirect(url_for('guess_number'))

if __name__ == '__main__':
    app.run(debug=True)

形式

<form method="post" action="{{ url_for('guess_number') }}">
    <label for="number">Enter your number :</label>
    <input type="number" id="number" name="number" required>
    <button type="submit">Guess</button>
    <h4>{{ secret_number}}</h4>
</form>

<form method="post" action="{{ url_for('reset') }}">
    <button type="submit">Restart</button>
</form>
nginx flask random gunicorn
1个回答
0
投票

为了解决这个问题,我将在@Sandeep Kulkarni的评论的指导下回答自己。 在主视图功能(

guess_number()
)上,应该添加:

if 'secret_number' not in session:
    session['nombre_secret'] = gen_secret_number()

重置功能中,应替换为

global secret_number
session.pop('secret_number', None)
以便以新数字开始。

我还推荐阅读在 Flask 中处理全局变量

© www.soinside.com 2019 - 2024. All rights reserved.