我有一个奇怪的问题,我在我的烧瓶会话中设置了一些值。我花了几次尝试重复这个错误,但这就是它失败的原因。
Internal Server Error 500
。 log_file2
)。有了这个,我可以看到我的所有会话值都消失了(不知道如何)。 log_file2
结束时制作了main()
,我的所有值都在那里,但是当我输入save时,没有一个存在。现在,这是有趣的部分:
如果我收到错误,请关闭窗口,等待一段时间然后重新打开(再次私下)我可以再次复制错误。但是,如果在我收到错误后再次登录,我填写表单并提交,它完美运行,我没有收到任何错误,我的会话值都在那里。我关闭了私人窗口,几分钟后重新打开并尝试提交我的表单(使用相同的用户)并且它工作得很好。我再次尝试,但我刚刚创建了一个用户(新的私人窗口),它给了我错误。问题是,在生产中,错误出现一次,用户重试并且他可以完美地提交,直到错误再次出现一次的几天。我真的很难确定这可能是什么。这是我第一次制作烧瓶网络应用程序,所以也许我错过了一些东西。
您可以给予我任何帮助。
这是代码:
@app.route("/main")
def main():
session.permanent = True
try:
if 'user' in session and 'client' in session and 'user_uid' in session:
session['start_date'] = datetime.now().strftime('%Y%m%d')
session['start_time'] = datetime.now().strftime('%H%M')
context = {
'discipline': session['discipline']
}
log_file2('None necessary')
return render_template('main.html', context=context)
else:
session.clear()
return redirect(url_for('login'))
except Exception as ex:
log_file(str(ex), 'main')
@app.route("/save", methods=['POST'])
def save():
session.permanent = True
log_file2(request.form.to_dict())
form_fields = Fields.get_fields_with_attr(session['client'])
values = request.form.to_dict()
try:
visit_uid = str(uuid4())
img_data = values['sig-data']
img = base64.b64decode(img_data)
with open(join(dirname(realpath(__file__)), "static/img/sigs/{0}.png".format(visit_uid)), "wb") as fh:
fh.write(img)
if 'on-site' in values:
values['on-site'] = 1
values['visit-date'] = session['start_date']
values['time-arrival'] = session['start_time']
values['time-finish'] = datetime.now().strftime('%H%M')
else:
values['on-site'] = 0
visitDate = datetime.strptime(values['visit-date'], '%Y-%m-%d')
values['visit-date'] = visitDate.strftime('%Y%m%d')
timeArrival = datetime.strptime(values['time-arrival'], '%I:%M %p')
values['time-arrival'] = timeArrival.strftime('%H%M')
timeFinish = datetime.strptime(values['time-finish'], '%I:%M %p')
values['time-finish'] = timeFinish.strftime('%H%M')
datetime_object = datetime.strptime(values['time-leave'], '%I:%M %p')
time_string = datetime_object.strftime('%H%M')
values['time-leave'] = time_string
values['emp-num'] = session['user']
Visit.prepare_fields(values, session['user_uid'], form_fields, visit_uid)
session.clear()
return redirect(url_for('login'))
except Exception as ex:
log_file(str(ex), 'save')
答案 0 :(得分:0)
经过大量的调查和阅读后,事实证明问题在于我使用os.urandom(24)
作为我的密钥。我使用该函数生成了一个字符串,并替换了字符串的函数,现在它正在完美运行。