博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
轮询/长轮询
阅读量:4516 次
发布时间:2019-06-08

本文共 2704 字,大约阅读时间需要 9 分钟。

轮询:通过setInterval向后台请求数据,更新html

from flask import Flask,render_template,request,jsonifyapp = Flask(__name__)USERS = {    '1':{
'name':'贝贝','count':1}, '2':{
'name':'小东北','count':0}, '3':{
'name':'何伟明','count':0},}@app.route('/user/list')def user_list(): import time return render_template('user_list.html',users=USERS)@app.route('/vote',methods=['POST'])def vote(): uid = request.form.get('uid') USERS[uid]['count'] += 1 return "投票成功"@app.route('/get/vote',methods=['GET'])def get_vote(): return jsonify(USERS)if __name__ == '__main__': # app.run(host='192.168.13.253',threaded=True) app.run(threaded=True)
app.py
    
Title
    {
    % for key,val in users.items() %}
  • {
    {val.name}} ({
    {val.count}})
  • {
    % endfor %}
user_list.html

长轮询:基于时间循环和队列的请求等待,实现数据的实时更新

from flask import Flask,render_template,request,jsonify,sessionimport uuidimport queueapp = Flask(__name__)app.secret_key = 'asdfasdfasd'USERS = {    '1':{
'name':'贝贝','count':1}, '2':{
'name':'小东北','count':0}, '3':{
'name':'何伟明','count':0},}QUEQUE_DICT = { # 'asdfasdfasdfasdf':Queue()}@app.route('/user/list')def user_list(): user_uuid = str(uuid.uuid4()) QUEQUE_DICT[user_uuid] = queue.Queue() session['current_user_uuid'] = user_uuid return render_template('user_list.html',users=USERS)@app.route('/vote',methods=['POST'])def vote(): uid = request.form.get('uid') USERS[uid]['count'] += 1 for q in QUEQUE_DICT.values(): q.put(USERS) return "投票成功"@app.route('/get/vote',methods=['GET'])def get_vote(): user_uuid = session['current_user_uuid'] q = QUEQUE_DICT[user_uuid] ret = {
'status':True,'data':None} try: users = q.get(timeout=5) ret['data'] = users except queue.Empty: ret['status'] = False return jsonify(ret)if __name__ == '__main__': app.run(host='192.168.13.253',threaded=True) # app.run(threaded=True)
app.py
    
Title
    {
    % for key,val in users.items() %}
  • {
    {val.name}} ({
    {val.count}})
  • {
    % endfor %}
user_list.html
from flask import Flask,render_template,request,jsonifyapp = Flask(__name__)import queueq = queue.Queue()@app.route('/get/vote')def get_vote():    try:        val = q.get(timeout=20)    except queue.Empty:        val = "已超时"    return val@app.route('/vote')def vote():    q.put('10')    return '投票成功'if __name__ == '__main__':    # app.run(host='192.168.13.253',threaded=True)    app.run(threaded=True)
app1.py

 

转载于:https://www.cnblogs.com/weidaijie/p/10491956.html

你可能感兴趣的文章
c++ queue类
查看>>
a span等行内元素加margin属性后无效果解决方案
查看>>
查看MySQL数据库大小
查看>>
2019面试题整理
查看>>
Linked List Cycle | & ||
查看>>
2、Jupyter Notebook 快速入门
查看>>
深入理解char * ,char ** ,char a[ ] ,char *a[]
查看>>
Linux网络和进程管理
查看>>
解决jsp无法用el表达式的问题
查看>>
Android 安全 (一)
查看>>
(DP求最长路) hdu 4607
查看>>
math.floor
查看>>
多表查询, 聚集查询和分组查询
查看>>
struct 和typedef struct的区别
查看>>
DOM2和DOM3读书笔记
查看>>
从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值。...
查看>>
洛谷p1216 IOI1994 Day1T1
查看>>
Python 命名空间
查看>>
Jackson(ObjectMapper)的简单使用(可转xml)
查看>>
Nginx 错误汇总
查看>>