django使用channels实现通信的示例


Posted in Python onOctober 19, 2020

1.安装依赖包

pip install channels channels-redis

2.settings.py 修改加上支持

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'MyWeb.apps.MywebConfig',
  "channels",
]

django使用channels实现通信的示例

首先需要建立一个django项目。其中在你自己的app下面 生成consumers.py和routing.py配置文件。

consumers.py:相当于django的视图,也就是说所有的websocket路由过来的执行的函数都在consumers.py类似于django的视图views.py

routing.py:是websocket中的url和执行函数的对应关系。相当于django的urls.py,根据映射关系,当websocket的请求进来的时候,根据用户的请求来触发我们的consumers.py里的方法。

3.安装redis

redis 安装配置默认密码

yum install -y redis

[root@localhost ~]# vim /etc/redis.conf 开启远程
bind 0.0.0.0 
protected-mode no

redis-cli -h 192.168.1.20 -p 6379

4.接着配置settings.py 最底部加上这条。

django使用channels实现通信的示例

CHANNEL_LAYERS = {
  'default': {
    'BACKEND': 'channels_redis.core.RedisChannelLayer',
    'CONFIG': {
      "hosts": [('192.168.1.20', 6379)],
    },
  },
}

ASGI_APPLICATION = "MyWeb.routing.application"

接着简单的写一下,routing.py 里面

from channels.routing import ProtocolTypeRouter

application = ProtocolTypeRouter({
  # Empty for now (http->django views is added by default)
})

进入django shell 测试是否能连接到数据库

(venv) C:\Users\LyShark\PycharmProjects\MyProject>manage.py shell
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import channels.layers
>>> channel_layer = channels.layers.get_channel_layer()
>>> from asgiref.sync import async_to_sync
>>> async_to_sync(channel_layer.send)('test_channel', {'type': 'hello'})
>>> async_to_sync(channel_layer.receive)('test_channel')
{'type': 'hello'}
>>>

以上就是django使用channels实现通信的示例的详细内容,更多关于channels实现通信的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
改进Django中的表单的简单方法
Jul 17 Python
Python中文竖排显示的方法
Jul 28 Python
Python教程之全局变量用法
Jun 27 Python
python3库numpy数组属性的查看方法
Apr 17 Python
django DRF图片路径问题的解决方法
Sep 10 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
Python如何安装第三方模块
May 28 Python
详解Django中异步任务之django-celery
Nov 05 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 #Python
python实现测试工具(一)——命令行发送get请求
Oct 19 #Python
基于Python制作一副扑克牌过程详解
Oct 19 #Python
Python实现壁纸下载与轮换
Oct 19 #Python
Python调用REST API接口的几种方式汇总
Oct 19 #Python
Python爬虫抓取论坛关键字过程解析
Oct 19 #Python
python MD5加密的示例
Oct 19 #Python
You might like
php的一些小问题
2010/07/03 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
一个手写的vue放大镜效果
2019/08/09 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
python生成验证码图片代码分享
2016/01/28 Python
Python 获取项目根路径的代码
2019/09/27 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Python3获取cookie常用三种方案
2020/10/05 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
俄罗斯运动鞋商店:Sneakerhead
2018/05/10 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
省级优秀毕业生主要事迹
2014/05/29 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
校长师德表现自我评价
2015/03/04 职场文书
公司员工奖惩制度
2015/08/04 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA