Я пытаюсь заставить функцию будильника работать во Flask, основная идея состоит в том, чтобы функция добавила задачу в модуль планирования, чтобы он работал в фоновом режиме и в конце концов печатал сообщение. Однако, когда я отправляю форму, страница просто пытается бесконечно загрузить новую задачу, пока не истечет время. Я предполагаю, что это связано с тем, куда я вставляю функцию, но я не совсем уверен, где.
def alarm():
now = time.time()
date_time = request.form['alarm']
date_format = '%Y-%m-%dT%H:%M'
alarm_for = int(time.mktime(time.strptime(date_time,date_format)))
run_for = int(alarm_for) - int(now)
s.enter(run_for,1,alarm_msg)
while True:
s.run(blocking=False)
@app.route('/',methods=['POST','GET']) #adding two methods posting and getting
def index():
if request.method == 'POST': #submitting form
task_content = request.form['content'] #create new task from user input
alarm_content = request.form['alarm']
alarm_tmp = alarm_content.replace('T', '-').replace(':', '-').split('-') #converting databse to python, help from stack-overflow
alarm_tmp = [int(v) for v in alarm_tmp]
alarm_datetime = datetime(*alarm_tmp)
new_task = Table(content=task_content,alarm=alarm_datetime) #have the contents = input
alarm()
try:
db.session.add(new_task) #add to database
db.session.commit()
return redirect('/') #redirect to input page
except:
return 'There was an error'
else:
tasks = Table.query.order_by(Table.date_created).all() #showing all contents on site
return render_template('index.html',tasks=tasks) #user viewing the page