使django rest框架成为被动的

djangorestframework-reactive的Python项目详细描述


Build StatusDocumentation StatusVersion on PyPISupported Python versionsNumber of downloads from PyPICode style: black

这个包使常规的django rest框架视图变得被动, 这样,客户端应用程序可能会收到 底层数据一旦出现,就不需要轮询api 再一次。当初始请求作为常规http请求执行时,所有 更新通知来自websockets。

安装

先决条件

django rest框架的反应式扩展需要使用Django Channels 用于通过WebSocket推送通知。

来自Pypi

pip install djangorestframework-reactive

来源

pip install https://github.com/genialis/django-rest-framework-reactive/archive/<git-tree-ish>.tar.gz

其中<git-tree-ish>可以表示任何提交sha、分支名称、标记名称, 在DRF Reactive’s GitHub repository等。例如,要安装最新的 来自master分支的版本,使用:

pip install https://github.com/genialis/django-rest-framework-reactive/archive/master.tar.gz

配置

首先,将rest_framework_reactive添加到INSTALLED_APPS

配置django频道routing.py以包括所需的路径:

from django.urls import path

from channels.routing import ChannelNameRouter, ProtocolTypeRouter, URLRouter

from rest_framework_reactive.consumers import ClientConsumer, MainConsumer, WorkerConsumer
from rest_framework_reactive.protocol import CHANNEL_MAIN, CHANNEL_WORKER

application = ProtocolTypeRouter({
    # Client-facing consumers.
    'websocket': URLRouter([
        # To change the prefix, you can import ClientConsumer in your custom
        # Channels routing definitions instead of using these defaults.
        path('ws/<slug:subscriber_id>', ClientConsumer),
    ]),

    # Background worker consumers.
    'channel': ChannelNameRouter({
        CHANNEL_MAIN: MainConsumer,
        CHANNEL_WORKER: WorkerConsumer,
    })
})

另外,urls.py还需要更新以包含一些附加路径:

urlpatterns = [
  # ...
  url(r'^api/queryobserver/', include('rest_framework_reactive.api_urls')),
  # ...
]

运行

除了运行django应用服务器实例外,还需要运行 独立的观察者工作进程(或多个)。您可以开始运行:

python manage.py runworker rest_framework_reactive.main rest_framework_reactive.worker

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

推荐PyPI第三方库


热门话题
java Maven无法识别安装在Ubuntu外壳上的$java_HOME jdk   java如何防止可运行程序在其中一个抛出异常时执行   java Listview在按下项时不触发   如何在WindowsPhone8中使用JavaRESTWebService?   java在spring引导下使用多个dispatcher servlet/web上下文   java为什么在删除容器的绝对大小时不绘制GEF子项?   java在hibernate实体中保留DB约束是好的   JavaSpring选择最高优先级bean   ArrayList<Class>java字符串[]   有向加权边图的Java邻接表实现   字母数字字符串的java Tesseract配置:混合2、Z、6和G   如果输入为空,则带有EditText的java警报对话框将关闭   jsp上的java Struts 2动作响应   java获取IndexOutOfBundException Android   scala AWSJAVASDK:解压缩大小必须小于262144000字节