Python 循环时创建后台线程
我正在使用一个python flask应用程序,在使用sqlite3数据库时,我与错误进行了长时间的斗争 当多个用户同时尝试提交一个会话时,它给出了一个错误,因此我决定用户只能在会话中添加和删除,而不能提交会话,我希望在特定时间(比如12:00)自动提交会话 如何对后台任务进行时间检查,以及当它发现是提供的时间时提交会话? 这是用于在会话中编辑对象(例如)的当前代码Python 循环时创建后台线程,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我正在使用一个python flask应用程序,在使用sqlite3数据库时,我与错误进行了长时间的斗争 当多个用户同时尝试提交一个会话时,它给出了一个错误,因此我决定用户只能在会话中添加和删除,而不能提交会话,我希望在特定时间(比如12:00)自动提交会话 如何对后台任务进行时间检查,以及当它发现是提供的时间时提交会话? 这是用于在会话中编辑对象(例如)的当前代码 @app.route('/NewRequest', methods=['GET', 'POST']) @login_require
@app.route('/NewRequest', methods=['GET', 'POST'])
@login_required
def NewRequest():
connUser=session.query(User).filter(User.id==Session.get('user_id')).one()
if request.method == 'GET':
Types = session.query(Req_Type.id,Req_Type.Type_name)
Pr = session.query(Req_Priorities.id,Req_Priorities.Priority_name)
return render_template('NewRequest.html',conn=connUser ,name=current_user.name, items=Types,priorities=Pr)
else:
name= request.form['Name']
Description= request.form['Description']
Type = request.form.get('Type')
Priority = request.form.get('Priority')
newRequest = Requests(name=name, Record_Created=datetime.now().strftime("%Y-%m-%d %H:%M"), Description=Description, Assigned_To=None, Type_Name=str(Type), Priority_Name=str(Priority), Status_Name='Opened', User_ID=Session.get('user_id') )
session.add(newRequest)
flash('New Request With Name %s Successfully Created' % newRequest.name)
UserRequests= session.query(Requests).filter_by(User_ID=Session.get('user_id')).filter(Requests.Status_Name!='Solved').all()
return render_template('ReqData.html',conn=connUser , title='User Requests', rows=UserRequests)
我想做一个后台任务来检查,如果时间是12:00,它就会执行
session.commit()
这条路好不好?
你认为这个应用程序的性能会更好吗?更改数据库(可能是postgresql)会解决并发提交问题吗?
我尝试使用进程运行后台循环,但它不起作用,需要它是一个线程不确定它是否有效,但目前它正在工作
def monitoring_loop():
while True:
if datetime.now().strftime("%H:%M:%S")=="12:00:00":
session.commit()
print("Committed Changes")
time.sleep(1)
monitoring_thread = threading.Thread(target = monitoring_loop)
monitoring_thread.daemon=True
monitoring_thread.start()
我仍然想知道其他数据库是否有人能回答我,我将不胜感激