跳转到主要内容

Django Channels,无需痛苦

项目描述

django-channels-handlers

Latest PyPI version image

Django Channels消费者,无需痛苦 💊

django-channels-handers是Django Channels的一个抽象层,使得实现优雅的协议变得简单,无需担心通信层。

需求

  • Django>=2.1
  • channels~=2.4
  • pydantic~=1.4

用法

从pypi安装django-channels-handlers

pip install django-channels-handlers

为每个您打算处理的消息创建pydantic模型。这允许处理程序验证消息并将其解析为对象。

from pydantic import BaseModel, UUID4
from typing import Dict, Optional
from datetime import datetime


class ChatMessage(BaseModel):
    type: str = "chat.message"
    id: UUID4
    thread: UUID4
    sender: UUID4
    content: str
    data: Optional[Dict] = {}
    created: datetime

创建一个消息处理程序。

这将首先使用模型中的相应条目验证和解析与handled_types匹配的消息。然后执行handled_types中指定的方法,传递新解析的消息对象。

from channels_handlers.handlers import MessageHandler
# For async, import AsyncMessageHandler


class ChatHandler(MessageHandler):
    namespace = "chat"
    models = {
        "chat.message": ChatMessage,
    }

    def message(self, message):
        # Some logic with message, e.g. save to database
        pass

导入ConsumerHandlerMixin并将其添加到您的Django Channels消费者中。然后,将您的自定义处理程序添加到消费者中的handler_classes。

from channels_handlers.consumers import ConsumerHandlerMixin
# For async, import AsyncConsumerHandlerMixin
from channels.generic.websocket import JsonWebsocketConsumer


class MyConsumer(ConsumerHandlerMixin, JsonWebsocketConsumer):
    handler_classes = [ChatHandler]

兼容性

django-channels-handlers与Python 3.7+、Django 2.2+和Django Channels 2.2+兼容。

许可

django-channels-handlers采用MIT许可。

作者

AUTHORS.md

贡献

django-channels-handlers依赖于像您这样有才华的编码者的贡献。有关更多信息,请参阅CONTRIBUTING.md

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

django-channels-handlers-0.2.2.tar.gz (4.7 kB 查看哈希值)

上传时间

构建分发

django_channels_handlers-0.2.2-py3-none-any.whl (4.9 kB 查看哈希值)

上传时间 Python 3

支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误记录 StatusPageStatusPage 状态页面