运行在Heroku上的Flask应用程序,带有python女服务员WSGI服务器(与gunicorn相同)。
在一个表单中(WTforms + flask-wtforms),我有一个日期字段。提交表单时,我在后端检查日期是否过去。如果是这样,我会在表单字段中添加一条错误消息(请参见下面的代码)。
当我提交带有过去日期的表单时,该表单会被正确地重新加载并且错误会突出显示。但是如果我将日期更改为正确的日期并再次提交,则请求超时。我进行了几次测试,并通过日志记录跟踪了执行情况,结果似乎在返回之前就卡住了(再次,请参见下面的代码)。
代码(简体)
def edit_template(template_id):
template = Template.query.get(int(template_id))
form = TemplateForm(obj=template)
if request.method == 'POST':
valid = True
if form.validate_on_submit():
form.populate_obj(template)
try:
if form.start_date.data < pendulum.now():
form.start_date.errors = "The date is in the past"
valid = False
except TypeError:
# This is to catch when the date is left blank
pass
if valid:
current_app.logger.debug('REALLY VALID')
db.session.commit()
else:
flash('ERROR saving data', 'danger')
current_app.logger.debug('READY TO RETURN')
# It stucks here!!! <-----------------------------------------------
return render_template('/templates/template_edit.html',
form=form)
也就是说,我可以在日志中看到字符串 READY TO RETURN ,但随后超时了(请参见下图)。但是,如果我删除try / except块,它将再次起作用。
谢谢