基于Posix IPC的ASGI通道层实现
项目描述
一个使用POSIX共享内存IPC作为后端存储的ASGI通道层(仅在同一台机器上的进程之间工作)。
IPC在UNIX兼容性方面仍然有点像西部荒野,所以如果您发现奇怪的错误,请提供详细信息和确切的系统规范,以便提交问题。特别是,此模块已在Linux内核和Windows Subsystem for Linux上进行了测试并表现良好;它也适用于Mac OS,但由于内核的限制,无法检测死锁情况。
用法
您需要使用路径前缀实例化通道层以创建根命名空间下的IPC对象;只要它们在同一台机器上,任何具有相同前缀的通道层都会相互通信。
示例
import asgi_ipc as asgi
channel_layer = asgi.IPCChannelLayer(
prefix="aeracode",
message_memory=200 * 1024 * 1024,
)
channel_layer.send("my_channel", {"text": "Hello ASGI"})
print(channel_layer.receive(["my_channel", ]))
prefix
用于根命名空间下IPC对象的路径前缀。默认为asgi
。在同一台机器上具有相同前缀的IPC层将相互通信。
message_memory
为通道存储分配的共享内存量,以字节为单位。默认为100MB。您所有正在传输的消息都必须适合此空间,否则如果内存空间已满,您将获得ChannelFull
错误。
ASGI消息的最大大小为1兆字节,通常要小得多。每个消息上方的IPC路由元数据约为50字节。
group_memory
分配给组存储的共享内存量,以字节为单位。默认为20MB。所有您的组成员数据必须适应这个空间,否则您的组成员资格可能无法持久化。
您可以将大约4000个组频道成员资格关联放入1MB的内存中。
过期
消息过期时间(秒)。默认为60。您通常不需要更改此设置,但如果您希望丢弃高峰流量,则可能需要将其降低;如果您希望将高峰流量保留到您可以处理时,则可能需要将其增加。
group_expiry
组过期时间(秒)。默认为86400。接口服务器将在这段时间后断开连接;建议您将其降低以创建鼓励断开连接的更健康的系统。
capacity
默认频道容量。默认为100。一旦频道达到容量,它将拒绝更多消息。这如何影响系统的不同部分各不相同;例如,HTTP服务器将拒绝连接,而Django发送响应将等待直到有空间。
channel_capacity
按频道配置的容量。这允许您根据频道名称调整频道容量,并支持通配符和正则表达式。
它应该是一个将频道名称模式映射到所需容量的字典;如果字典键是字符串,则将其解释为通配符,如果是一个编译的正则表达式对象,则将其视为正则表达式。
此示例将http.request设置为200,所有http.response!频道设置为10,以及所有websocket.send!频道设置为20。
channel_capacity={
"http.request": 200,
"http.response!*": 10,
re.compile(r"^websocket.send\!.+"): 20,
}
如果您想强制执行匹配顺序,请使用OrderedDict作为参数;频道将按字典提供的顺序进行匹配。
依赖项
所有Channels项目目前支持Python 2.7、3.4和3.5。
贡献
请参阅主Channels贡献文档。它还包含有关如何设置开发环境和运行测试的建议。
维护和安全
要报告安全问题,请联系security@djangoproject.com。有关GPG签名和更多安全流程信息,请参阅https://docs.django.ac.cn/en/dev/internals/security/。
要报告错误或请求新功能,请打开新的GitHub问题。
此存储库是Channels项目的一部分。对于牧羊人和维护团队,请参阅主Channels自述文件。
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源分布
构建分布
asgi_ipc-1.4.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2403f41184405791b05e7aee570bd6ccd47e2d91845d78fe17adcf58ef48c037 |
|
MD5 | b0cb6e35867600acfb4e46405dfa0678 |
|
BLAKE2b-256 | cd6a6198cf9d8ff16740b71ddbeed27315a426d7052946fe1d053550f0152c22 |
asgi_ipc-1.4.2-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 07e0fdacc4f1c4d91054b7da06c62c6806cd28e9e113744c08a7dfaf7a335d3f |
|
MD5 | 17a6b6a1a25672d3d1c702fe806aa4ff |
|
BLAKE2b-256 | 4cdaf8356f2f2c7898c532a3d06638171183c3dbd401cff77eccb15985ed1a99 |