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错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
python通过ssh-powershell监控windows的方法
Jun 02 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python语言描述最大连续子序列和
Dec 05 Python
运行django项目指定IP和端口的方法
May 14 Python
对python中的高效迭代器函数详解
Oct 18 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
python之mock模块基本使用方法详解
Jun 27 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
python eventlet绿化和patch原理
Nov 21 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
javascript之ESC(第二类混淆)
2007/05/06 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
python中PyQuery库用法分享
2021/01/15 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
SQL Server笔试题
2012/01/10 面试题
夜大毕业生自我评价分享
2013/11/10 职场文书
《春雨》教学反思
2014/04/24 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
顶岗实习计划书
2015/01/16 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis