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 不同对象比较大小示例探讨
Aug 21 Python
基python实现多线程网页爬虫
Sep 06 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
浅析python中的迭代与迭代对象
Oct 08 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
Python测试框架:pytest学习笔记
Oct 20 Python
Python中的面向接口编程示例详解
Jan 17 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性能优化 产生高度优化代码
2011/07/22 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
js自定义回调函数
2015/12/13 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
培训主管的岗位职责
2013/11/23 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
护理职业生涯规划书
2014/01/24 职场文书
小学校长汇报材料
2014/08/20 职场文书
成本会计实训报告
2014/11/05 职场文书
用python画城市轮播地图
2021/05/28 Python
使用feign服务调用添加Header参数
2021/06/23 Java/Android
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS