以下脚本尝试使用
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>
为了解决这个问题,我将在@Sandeep Kulkarni的评论的指导下回答自己。 在主视图功能(
guess_number()
)上,应该添加:
if 'secret_number' not in session:
session['secret_number'] = gen_secret_number()
重置功能中,应替换为
global secret_number
与 session.pop('secret_number', None)
以便以新号码开始。
我还建议阅读在 Flask 中处理全局变量。