通过queue实现前端的被动接收
一般请求都是由前端主动发起请求,后端响应,但有些情况必须要后端达到一定条件了才向前端相应数据,这就变成前端被动了。比如微信接收信息,只有别人给你发消息,你才能被动接收消息。
最近做了个项目,当有人经过摄像头的时候,经过人脸识别,把识别出来的信息主动返回给前端。这种情况可以通过后端阻塞的方式实现,也就是让前端先发送一个请求给后端,后端阻塞,直到达到某种条件再响应,前端获取到响应数据的时候立马重新发送一个请求。
可以通过queue的方式实现
from queue import Queue
from flask import Flask, request, jsonify, session
from flask_cors import * import get_user app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
CORS(app, supports_credentials=True) # 和前端联调测试,允许跨域请求
q = Queue(maxsize=100) # 设置队列允许最大的元素,100个 @app.route('/', methods=['POST'])
def get_callback():
"""监听face++的回调函数,只要有人经过镜头,就会把信息发送给这个路由"""
data = request.get_json()
subject_id = data.get('subject_id')
# 根据subject_id获取员工信息
if subject_id is None:
data_one = {'name': '陌生人', }
else:
# get_one为根据subject_id调用数据库数据的一个函数
data_one = get_user.get_one(subject_id)
data_one['gender'] = data['gender'] data_one['age'] = data['age']# 把数据放入队列,实现队列去重
li = []
if data_one in li:
return jsonify({'code': 203})
else:
li.append(data_one) # 把数据添加到列表模拟队列 try:
q.put(data_one, timeout=10) # 把数据添加到队列如果队列已经满了,再添加数据,超过10秒就抛异常
except:
pass return jsonify({'code': 200}) @app.route('/show',methods=['POST'])
def get_vote():
"""前端请求这个接口"""
ret = {'status': True,'data': None} # 构造一个json数据 try:
data_one = q.get() # 从队列取出数据,如果没有数据,会阻塞在这一步
ret['data'] = data_one
except:
ret['status'] = Falsereturn jsonify(ret) if __name__ == '__main__':
app.run(port=9010, host='0.0.0.0')
通过queue实现前端的被动接收的更多相关文章
- 【大话QT之十】实现FTP断点续传(需要设置ftp服务器为“PASV”被动接收方式)
应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在客户端修改或新增加一个文件时,该文件要同步上传到服务器端对应的用户目录下,因此针对数据传输(即:上传.下载)这一块现在既定了三种传输方式,即: ...
- Queue 消息的发送与接收(PTP 消息传递模型)
上篇博客写到了JMS两种消息模型(P2P.pub/sub)<JMS两种消息模型>.本篇博客通过一个实例来进一步了解P2P模型. Queue消息的发送与接收--PTP消息传递模型,样例: Q ...
- FastSocket客户端/服务端通讯示例 客户端被动接收
示例代码参见 http://www.cnblogs.com/T-MAC/p/fastsocket-asyncbinary-usage.html 我这里只写一份客户端如何被动接收的代码. 先从As ...
- Flask中向前端传递或者接收Json文件的方法
1. 利用flask的request.form.get()方法 这一中方法主要利用flask的request.form.get方法,获得前端发送给后台的json文件 Python 端代码: @app. ...
- nodejs通过buffer传递数据到前端,前端通过arraybuffer接收数据
以后端传送threejs中的点阵数组为例: 后端: let buffer = Buffer.alloc((points.length + 4) * 4) //points.length + 4:预留前 ...
- C#无限分级实现,前端WEB页面接收,后台提供层级Json数据
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...
- (前端常考面试题)从敲入 URL 到浏览器渲染完成,到底发生了什么 ?
前言 小汪最近在看[WebKit 技术内幕]一书,说实话,这本书写的太官方了,不通俗易懂. 但是看完书,对浏览器内核的 WebKit 有了进一步的了解,所以从浏览器内核出发,写这篇文章以记录学到的知识 ...
- 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!
前言 见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正. 为什么要梳理这篇文章? 最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目. ...
- 从输入url开始,完善前端体系架构
原文链接: https://segmentfault.com/a/1190000013662126 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系! javascript 前端 23 ...
随机推荐
- ES6——面向对象-基础
面向对象原来写法 类和构造函数一样 属性和方法分开写的 // 老版本 function User(name, pass) { this.name = name this.pass = pass } U ...
- Spark2.0 Java实现将Hive运算结果保存到数据库
package com.gm.hive.SparkHive; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; ...
- Oracle 11g+Windows10 x64安装、配置过程记录
备注:本想在自己电脑上安装个oracle练习用,但是害怕安装过程中出现问题,而oracle的卸载又是出了名的麻烦,所以用虚拟机搭建了一个跟本机一样的系统,同时记录下安装的每一步. 环境:windows ...
- python 数据分析 Numpy(Numerical Python Basic)
a = np.random.random((2,4)) a Out[5]: array([[0.20974732, 0.73822026, 0.82760722, 0.050551 ], [0.773 ...
- JSP学习(5)
JSP学习(5) 保存用户状态的两大机制 session对象 Cookie Cookie简介 是Web服务器保存在客户端的一系列文本信息 典型应用 判断注册用户是否已经登录 购物车处理 作用 对特定对 ...
- Tomcat部署虚拟主机
使用Tomcat部署加密虚拟主机,实现: a.使用www.a.com域名访问的页面根路径为/usr/local/tomcat/a/base b.使用www.b.com域名访问的页面根路径为/usr/l ...
- Codeforces Round #425 (Div. 2) - A
题目链接:http://codeforces.com/contest/832/problem/A 题意:有n个棍子,两个人轮流取这些棍子,每个人每次只能去恰好k个棍子(不足k个则不能取),问先手取的棍 ...
- tac反向显示文件内容
1.命令功能 tac是cat的反向拼写功能是反向显示文件内容.cat是从文件第一行开始读取文件输出,tac是从最后一行开始读取文件并进行反向输出. 2.语法格式 tac [option] [fil ...
- JS合并两个函数
/** * 合并两个函数 * @param functionA 先执行 * @param functionB 执行完 functionA 后返回 * @returns {*} */ function ...
- UML快速理解
在团队协作过程中最常见的就是开会.开会最常用的就是图,而图中最常见的就是流程图.时序图.类图,这三个图可以清楚的描述你想解释的内容.学好类图不仅仅能帮助自己更清楚的梳理业务,还能提高开会效率. 上图是 ...