通过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 ...
随机推荐
- .linux基础命令三
一. 两台服务器免密登录: 1. 生成密钥 ssh-keygen的命令手册,通过”man ssh-keygen“命令查看指令: 通过命令”ssh-keygen -t rsa“创建一对密匙,包括公匙和私 ...
- echart 折线渐变 加柱形图结合图形,左右纵轴自设置格式,现行图北京渐变 ,x轴字体倾斜
app.title = '折柱混合'; option = { grid: { left: '5%', //距离左边的距离 right: '5%', //距离右边的距离 top:'8%', bottom ...
- ideamaven版的MBG逆向工程
一.简介 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类. 支持基本的增删改查,以及QBC风格的条件查询. 但是表连接.存储 ...
- pg_dumpall - 抽出一个 PostgreSQL 数据库集群到脚本文件中
SYNOPSIS pg_dumpall [ option...] DESCRIPTION 描述 pg_dumpall 是一个用于写出("转储")一个数据库集群里的所有 Postgr ...
- java通过图片URL下载图片
public InputStream getInputStream(String imgUrl) { InputStream inputStream = null; try{ HttpURLConne ...
- html5 新增和改良的input 类型实例
url test1.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 触发写Redo Log的条件
参见:http://www.ixora.com.au/notes/redo_write_triggers.htm http://www.eygle.com/archives/2005/02/redoa ...
- Mysqldump导入数据库很慢的解决办法
https://blog.csdn.net/xizaihui/article/details/53103049 1.MySQLdump导出的SQL语句在导入到其他数据库的时候会相当慢,甚至几十秒才处理 ...
- LeetCode--047--全排列 II(java)
给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 对比46题增加了used数组,判断该数上次是 ...
- Bugku 杂项 签到题
签到题 加微信公众号会发现