Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Websocket/restapi-哪一个适用于大型请求场景? 我知道它们是两种不同的东西和技术方法,但是考虑一下这个场景:我有一个第三方应用程序,它将与我自己的应用程序接口,每5分钟就必须向我的服务推送一个大JSON(大约3 /4MB)。_Django_Nginx_Websocket_Wsgi_Daphne - Fatal编程技术网

Django Websocket/restapi-哪一个适用于大型请求场景? 我知道它们是两种不同的东西和技术方法,但是考虑一下这个场景:我有一个第三方应用程序,它将与我自己的应用程序接口,每5分钟就必须向我的服务推送一个大JSON(大约3 /4MB)。

Django Websocket/restapi-哪一个适用于大型请求场景? 我知道它们是两种不同的东西和技术方法,但是考虑一下这个场景:我有一个第三方应用程序,它将与我自己的应用程序接口,每5分钟就必须向我的服务推送一个大JSON(大约3 /4MB)。,django,nginx,websocket,wsgi,daphne,Django,Nginx,Websocket,Wsgi,Daphne,我的应用程序由一个Python Django web应用程序组成,Gunicorn服务于WSGI请求,DAPHNE服务于ASGI连接,在此之前,我放置了一个NGINX作为反向代理 在web应用程序中,我基本上创建了两个端点: REST插入API端点 公开接收器(用于插入数据)的Websocket端点 在我的测试环境中,我看到当我尝试将JSON推送到websocket端点时,很多时候websocket会关闭,并显示以下错误消息: “HTTP_更新_失败错误(-104):错误的HTTP代码” N

我的应用程序由一个Python Django web应用程序组成,Gunicorn服务于WSGI请求,DAPHNE服务于ASGI连接,在此之前,我放置了一个NGINX作为反向代理

在web应用程序中,我基本上创建了两个端点:

  • REST插入API端点
  • 公开接收器(用于插入数据)的Websocket端点
在我的测试环境中,我看到当我尝试将JSON推送到websocket端点时,很多时候websocket会关闭,并显示以下错误消息:

“HTTP_更新_失败错误(-104):错误的HTTP代码”

NGINX中的WS-endpoint配置如下:

 location /ws/ {
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_connect_timeout 15s;
    proxy_send_timeout 3600s; # ws will open for 1 hour
    proxy_read_timeout 3600s;
    proxy_buffers 512 256M;
    proxy_buffer_size 256M;

    proxy_pass http://daphne_server; #DNS resolved by internal docker dns server
  }
为了避免这个问题,我曾多次尝试将websocket消息负载减少到1MB左右,然后在没有任何问题或错误的情况下工作……也许我必须仔细研究DAPHNE的配置才能使其工作

使用RESTAPI,一切工作都完美无缺,没有错误和警告


对于这个特定场景,我不清楚我必须指出哪种技术:您建议如何使用这个“大”消息有效负载?REST API还是WebSocket?

我认为REST是解决这个问题的方法。这是最简单的,您可以免费获得压缩(如果您已经配置了它的话),您可以为您解包JSON。WebSocket实际上是双向连接。对于大数据包,您必须考虑帧大小、处理连接断开、可能自己进行压缩。我认为REST是解决此问题的方法。这是最简单的方法,您可以免费获得压缩(如果您已配置),您可以将JSON解包。WebSocket实际上是双向连接。对于大数据包,您必须考虑帧大小、处理连接断开、可能自己进行压缩。