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 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
Python3使用requests登录人人影视网站的方法
May 11 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
浅谈python标准库--functools.partial
Mar 13 Python
python实现弹跳小球
May 13 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
简单了解django索引的相关知识
Jul 17 Python
Python能做什么
Jun 02 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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/12/29 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
详谈javascript异步编程
2016/02/21 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Ratchet 模态框的实现
2020/08/19 HTML / CSS
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
工程造价自荐信
2013/10/09 职场文书
手机业务员岗位职责
2013/12/13 职场文书
优秀老师事迹材料
2014/02/05 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android