redis支持的asgi通道层实现

asgi_redis的Python项目详细描述


用法

您需要用至少 个主机来实例化通道层, 以及其他选项(如果您需要)。

示例:

channel_layer=RedisChannelLayer(host="redis",db=4,channel_capacity={"http.request":200,"http.response*":10,})

主机

以uri或 (主机,端口)元组的形式连接到的服务器。默认为 ['localhost',6379] 。传递多个主机以启用分片,但请注意,更改主机列表将丢失一些分片数据。

前缀

要添加到所有redis键的前缀。默认为 asgi: 。如果你在跑步 两个或多个完全独立的通道层通过同一个redis实例, 确保它们有不同的前缀。所有与同一层对话的服务器 不过,应该有相同的前缀。

到期

消息在秒内过期。默认为 60 。你一般不需要 要改变这个,但如果你有高峰流量,你可能想把它关小一点 如果你有高峰流量,你想停下来,或者停下来 开始吧。

组有效期

组在秒内过期。默认为 86400 。接口服务器将丢失 在这段时间后连接;建议您将其减少为 更健康的系统,鼓励断开连接。

容量

默认信道容量。默认为 100 。一旦一个频道有容量, 它会拒绝更多的信息。这如何影响系统的不同部分 变化;例如,http服务器将拒绝连接,而django 发送响应将一直等到有空为止。

信道容量

每通道容量配置。这样可以调整频道容量 基于频道名称,并支持全局和正则表达式。

它应该是将通道名称模式映射到所需容量的dict;如果 dict key是一个字符串,它被称为glob,而如果它是编译的 re 对象,它被视为正则表达式。

这个例子将http.request设置为200,all http.response! 频道 到10,全部 websocket.send! 20个频道:

channel_capacity={"http.request":200,"http.response!*":10,re.compile(r"^websocket.send\!.+"):20,}

如果要强制执行匹配的顺序,请使用 ordereddict 作为 参数;然后将按照dict提供的顺序匹配频道。

对称加密密钥

传递此消息以启用后端的可选对称加密模式。到 使用它,确保安装了 加密软件包,或者指定 当您安装asgi_redis时, 加密 额外功能:

pip install asgi_redis[cryptography]

对称加密密钥应该是一个字符串列表,每个字符串 作为加密密钥。第一个密钥总是用于加密;所有的都是 考虑解密,这样就可以在不停机的情况下旋转密钥-只需添加 一把新钥匙,把旧钥匙移下来,然后把旧钥匙移走 消息过期后。

数据在有线和静止状态下都加密在Redis,尽管我们建议 为了更高的安全性,您还可以通过tls路由redis连接;redis 协议仍然未加密,通道和组密钥名可以 可能包含攻击者使用的元数据模式。

键的熵至少应为32字节 在用作加密密钥之前使用的SHA256哈希函数。任何字符串 可以工作,但字符串越短,加密就越容易中断。

如果您使用的是django,您也可以将其设置为 密钥 通过 通道层设置 设置:

CHANNEL_LAYERS={"default":{"BACKEND":"asgi_redis.RedisChannelLayer","ROUTING":"my_project.routing.channel_routing","CONFIG":{"hosts":["redis://:password@127.0.0.1:6379/0"],"symmetric_encryption_keys":[SECRET_KEY],},},}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
刷卡时java更改recyclerview项目背景   java如何在ServerSocketChannel上收集I/O统计信息   安卓 EditText始终返回Null Java NullPointerException   java 1美元的类文件名是什么?   java这是一个有效的方法吗?Eclipse似乎暗示我的代码存在ab问题。。我就是看不出来   在后台收到推送通知后更改java活动   java如何在TableViewerColumn中使用CheckBoxTableCell   java静态方法使用泛型创建内部类   java struts2<s:选择…>标签   java中变量范围内的错误输出   在类型与该类相同的类中声明的java静态变量   java在随机数列表中查找三角形   java如何检测Mac OS的右击事件   java为现有CSV文件创建DAO   javax的ClassNotFoundException。xml。绑定切换到Java 9时,JAXBEException与Spring启动   安卓将Kotlin算法翻译成Java代码   java m从recylerview获取错误,因为我试图从sqlite获取数据并设置为recylerview