使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将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List