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制作获取网站目录的图形化程序
May 04 Python
Python中操作符重载用法分析
Apr 29 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
对Python 语音识别框架详解
Dec 24 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 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 disk_free_space 返回目录可用空间
2010/05/10 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
JS实现简单的Canvas画图实例
2013/07/04 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
javascript实现密码验证
2015/11/10 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
Canvas实现动态的雪花效果
2017/02/13 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
Python入门篇之字符串
2014/10/17 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
python基础练习之几个简单的游戏
2017/11/10 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
带你认识Django
2019/01/15 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Pandas的Apply函数具体使用
2020/07/21 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
父亲追悼会答谢词
2014/01/17 职场文书
优秀小学生家长评语
2014/01/30 职场文书
小学语文教学反思
2014/02/10 职场文书
年级组长自我鉴定
2014/02/22 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python
2022年显卡天梯图(6月更新)
2022/06/17 数码科技