问题描述
我是Python Flask的初学者。我有一个反应本地应用程序。在执行main函数的过程中,我想获得用户输入。我还想在函数执行过程中动态更新status
状态挂钩的值。
这就是我所做的。
客户端设备
React.useEffect(()=>{
//all variables and hooks have been declared in original code
//skipping all declarations to reduce size
fetch('http://localhost:5000/start',{
method: 'POST',headers: {
Accept: 'application/json','Content-Type': 'application/json',},body: JSON.stringify({
session: sessionID,url: url,user: username,password: password,stuff1: stuff1,stuff2: stuff2
})
});
return unsubscribe;
},[navigation]);
});
//refresh the status every 2 seconds
React.useEffect(() => {
const interval = setInterval(() => {
fetch('http://localhost:5000/status',body: JSON.stringify({
session: sessionID
})
}).then(res => res.json()).then((data)=>{
setStatus(data.status);
console.log(data.status);
if(data.status==='Failed'){
setStatus("Sorry,this task has Failed");
setTimeout(()=>{navigation.goBack()},3000)
}
}).catch(()=>{
setStatus("Either our server or this device went offline");
//just giving user 5 secs to read the status
setTimeout(()=>{
setStatus("Try again...")
navigation.goBack('Task_Elaborate');
return;
},5000)
});
},2000);
return () => clearInterval(interval);
},[]);
服务器(运行Flask)
#function to refresh status in client device
@app.route('/status',methods=['GET','POST'])
@cross_origin(origin='*',headers=['Content-Type','Authorization'])
def refresh_status():
data = request.get_json()
session['currentuser'] = data['session']
if(stuff.status=='Failed'):
session.pop(data['session'],None)
return jsonify({'status':stuff.status})
#function to run for triggering main()
@app.route('/start','Authorization'])
def start_main():
data = request.get_json()
url = data['url']
username = data['user']
password = data['password']
stuff1 = data['stuff1']
stuff2 = data['stuff2']
session['currentuser'] = data['session']
stuff.main(url,username,password,stuff1,stuff2)
return ""
运行stuff.main()
时,我想获得用户输入并将其用于进一步处理。我该怎么办?
关于状态,该应用首先通过向服务器发出请求来启动主要功能。这将触发服务器中main()
的执行。然后,该应用程序每2秒发出刷新状态请求。这些代码段确实起作用。但是我希望有大量的用户,这会减慢它的速度。由于其主要功能,因此速度是此应用程序非常重要的方面。另外,在这种方法中,我无法获得用户输入,这是此问题的必要部分。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)