问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django怎么主动推送(django消息通知)

发布网友 发布时间:2024-10-03 06:38

我来回答

1个回答

热心网友 时间:2024-11-20 08:01

导读:本篇文章首席CTO笔记来给大家介绍有关django怎么主动推送的相关内容,希望对大家有所帮助,一起来看看吧。

djangowebsocket

做个比喻,如果说A是服务端,B是客户端,现在要在A家里吃火锅,虽然A说你人来就行,但是B心想总得带点东西过去,于是去了市场.

先到了蔬菜店,B想买点菠菜,但又怕A家里已经有了,于是给A打电话

B:"我带点菠菜过去吧?"

A:"好"

然后挂断.过一会儿到了水产区

B:"我带点虾过去吧?"

A:"不用"

...如此反复多了之后A突然发现自己确实少准备了一些东西,于是A给主动给B打了电话

A:"我忘准备蘸料了,你买点,然后先别挂掉"

...

A:"再买瓶酒"

...

这就是websocket了

django当让也提供对websocket的支持,虽然这似乎不是他更擅长的东西.我们可以通过channels实现websocket连接

诸如上述例子的场景都是合适的场景

举例来说的话比如聊天室,每个人发送的消息都要实时显示在别人的屏幕上.

比如说数据监控,波动状态也要实时的呈现在屏幕上,而不是依赖于使用者自己刷新.

需要安装channels,asgi_redis,asgiref,channels_redis.后三个未必都需要装,记不太清了,总之安装过程都在channels的使用文档上.

INSTALL_APPS中需要加上"channels",需要注意的是因为这是一个list,是有先后顺序的,最好把它加在第一个.

这里我们的channel通过redis实现,要在settings.py中配置

这里还有点小坑,官方文档里的hosts不是这种格式,是"uri"这种模式,但是如果你在设置redis密码时机智的设置了特殊符号('#$%'这种),你就会发现redis的uri直接就用不了了,期间尝试各种方法,转义什么的也试了都不行,然后去github上开了个issue,结果作者说我们是通过aioredis连接的,你去找他们的文档吧....

然后就找到了这种方式.

常规的WSGI不支持websocket,所以还需要配置ASGI

ASGI_APPLICATION='project.routing.application'

同wsgi的配置一样,这是指向project文件夹下routing.py文件的application

这里建议大家跟这官方教程的Tutorial走一遍.有个比较悲剧的地方就是网上可以搜到许多channels使用指南,大多都是搭个简易聊天室什么的,然而你用起来可能发现存在各种报错,因为channels升了2.0之后更改了一些方法,而那些教程里基本全都是1.x的版本.

简单说下,首先startapp叫chat,假如这里我们没有进行前后端分离,里面有templates,两个html:index和room分别对应首页和某一个聊天室

新建consumers.py来写websocket方法

如上,connect和disconnect含义分别如函数名.因为是聊天室,所以同一个聊天室内的人应该消息共享,用room_group_name来区分所在的频道.

receive和chat_message是对消息的处理.当一个用户发送消息时,前端把消息通过websocket发送过来,receive收到消息提取关键内容,通过chat_message发送给组内的所有连接.这时保持连接的所有组内人员都会收到这条消息推送,前端收到推送再显示在屏幕上.

定义websocket的地址

类似于django的url(consumers.py就类似于views.py),同级新建routing.py

统一用ws/来区分websocket的连接

剩下常规的页面配置和django一样

views.py:

urls.py:

注意:如果网站是http,连接使用ws,如果是https要修改成wss

剩下的自己找资料吧,笔者对前端了解的不多

本地的话runserver就好了,但是在线上还是得更改启动方式应对高并发.

传统的uwsgi不支持websocket.

gunicorn好像可以同时支持websocket,但是性能不太ok

这里我们用daphne

这里需要额外开个服务,专门负责处理websocket.

ingress中要配置路由跳转

django实现实时消息推送有什么好的方案

django实现实时消息推送,数据库数据一有变化就实时反应在页面上用作系统实时监控。在一个HTTP访问周期里,如果要执行一个长时间任务,为了避免浏览器等待,后台必须使用异步动作。

与此同时也要满足实时需求,用户提交了任务后可以随时去访问任务详情页面,在这里用户能够实时地看到任务的执行进度。针对异步任务处理,使用了Celery把任务放到后台执行。

Celery是一个基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,关于它的使用方法《网易乐得RDS设计》也有提到。Celery在处理一个任务的时候,会把这个任务的进度记录在数据库中。

消息推送直接找专业的平台,例如极光。深圳市和讯华谷信息技术有限公司(极光AuroraMobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。

后端如何接受传感器

大数据(bigdata),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),平台有hadoop

我正在开发一个实时网络应用程序,它将显示从浏览器中的传感器收集的数据.但似乎有两种方法可以做到这一点.在前端我使用Angular4.在后端我使用django.

第一种方法是使用Django创建套接字客户端并直接连接到传感器dadacollector(这是一个raspberrypi).在树莓派上有一个套接字服务器在它上面听.一旦django连接到raspberrypi,raspberrypi就会将数据推送到套接字.然后django可以使用websocket(通过djangoChannels)将数据推送到前端角4.

第二种方法是运行一个独立的python套接字客户端脚本,连接到raspberrypi套接字服务器并将数据保存到数据库中.后端django将每秒查询数据库并获取最新数据.然后使用websocket以与第一种方式相同的方式将数据推送到前端角4.

结语:以上就是首席CTO笔记为大家整理的关于django怎么主动推送的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django怎么主动推送的相关内容别忘了在本站进行查找喔。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 如何用树莓派做实时视频聊天 ...楼上网不好,女儿想在楼上也安一个路由器,怎么安呢 家中安装了一个路由器但在楼上信息太弱,想在楼上装一个路由器但不知... 家中装了一个无线路由器向在楼上也装上一个不知道怎么操作请教各位大 ... 微信聊天房屋买卖算数吗? 元旦用英语怎么说呀 英文邮件中的“暗语”缩写:TBD、TBC、EOD、都是什么意思? 开眼角的风险 开了眼角后有个疙瘩怎么回事 全切开眼角眼角增生了,增生上面有小白点是咋回事 开眼角后有凸起小疙瘩是增生吗 一年前做了开眼角手术,可是两个眼角处各起了一个小包 怎样快速消除下眼袋 眼袋怎么快速消除 11086fucai低频采分析——剑网三装备镶嵌上的五行石可以剥离吗有什么损... 剑网三七秀有哪些装备值得精炼插石头啊,新手求教!谢谢! 剑网三255护手强满能剥离出7级五行石吗? 重装xp系统后,主板安装不了。什么原因?用光盘安的主板驱动。提示是什... 如何从硬盘安装XP系统?在线等。我QQ309383670 停住不动,装xp系统时走到"正在安装网络"32分钟时,但右下角方块进度条... XP系统安装失败 高手回答 在线等答案 教你从零开始连接树莓派远程桌面 外汇入金用信用卡和往银行打款哪个划算? 对劳动合同内容达成一致的微信聊天记录能否视为书面劳动合同 学生买火车票享受半票待遇一定要是从学校到老家的路才有用吗?如果我... 学生证上写的是“北京-怀化”,买票的时候就只能这样走才能买半价的学生... 直达车学生优惠问题,我学生证上填的区间是北京西到武昌,但武昌没有直... ...学生证是牡丹江到北京的,户口是哈尔滨的,我能买从哈尔滨到北京的学生... 买学生火车票。 我的学生证上的乘车区间是哈尔滨到温州,我能不能用... 我的学生证乘车区间是南京到宁波,那我从南京到上海可不可以用学生证半价... 我的学生证是长春到北京的 但现在要买从吉林到北京的票 不途径长春 能... 学生证买火车票 可以先买半途的 再从半途买半价回学校吗?? ...版本的,有一个ppt文件后缀是pptx的,想把他改成ppt格式 口头协议到底有没有法律效力? ...给我找一部小说 《辉煌岁月》纯银耳坠写的 跪求资源 谢谢_百度... 微信聊天记录算不算口头合同 三亚下水的话 贵重物品寄存问题!超急!~~~高分 美女如云的电影有哪些 美女电影有哪些? 有美女的电影有哪些 薇诺娜熊果苷美白保湿精华液的上脸感受如何?