跳转到主要内容

基于Posix IPC的ASGI通道层实现

项目描述

https://api.travis-ci.org/django/asgi_ipc.svg https://img.shields.io/pypi/v/asgi_ipc.svg

一个使用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 (6.9 kB 查看哈希值)

上传时间

构建分布

asgi_ipc-1.4.2-py2.py3-none-any.whl (10.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页