Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Python 可靠的大容量数据流的最佳方法:带有Django通道的WebSocket?_Python_Django_Websocket_Django Rest Framework - Fatal编程技术网

Python 可靠的大容量数据流的最佳方法:带有Django通道的WebSocket?

Python 可靠的大容量数据流的最佳方法:带有Django通道的WebSocket?,python,django,websocket,django-rest-framework,Python,Django,Websocket,Django Rest Framework,我们公司不久前构建了一个端点,它公开了一个POST端点,另一家公司向该端点推送了大量数据。在峰值时刻,每秒有200多个请求。但是,流始终只来自一个客户端 我想让它更高效,这样就可以避免我想到的每个使用WebSocket的请求都会产生https开销。我对简单网站的WebSocket有一些经验,但到目前为止还没有连续的高容量数据流 我们的设置基于Python/Django堆栈。我可以使用不同于Django的东西,但是保持当前的设置会更容易 所以我想知道一些事情。首先是可靠性。据我所知,WebSock

我们公司不久前构建了一个端点,它公开了一个POST端点,另一家公司向该端点推送了大量数据。在峰值时刻,每秒有200多个请求。但是,流始终只来自一个客户端

我想让它更高效,这样就可以避免我想到的每个使用WebSocket的请求都会产生https开销。我对简单网站的WebSocket有一些经验,但到目前为止还没有连续的高容量数据流

我们的设置基于Python/Django堆栈。我可以使用不同于Django的东西,但是保持当前的设置会更容易

所以我想知道一些事情。首先是可靠性。据我所知,WebSocket基于
“最多一次”
“至少一次”
可交付性。在本文中,我了解到Django频道属于
“最多一次”
类型。这意味着数据包很可能会丢失。我的问题是,;我怎样才能考虑到这一点?影响websocket可靠性的因素有哪些?我应该以多大的数量级思考?我需要讨论我们是否接受丢失的记录,但我是否应该考虑
0.1%
0.01%
0.0001%

还有一个更普遍的问题:在我的情况下,WebSocket是明智之举吗?或者你会建议一种不同的方法吗?我也想到了(我有更多的经验),但由于这是Django设置,我认为WebSocket感觉更“原生”


无论如何,欢迎提供所有提示。

请求是否来自多个客户端?@bdoubleu-不,只是一个客户端。为了更清楚,我把它添加到了问题中。不幸的是,我没有关于WebSocket的任何补充,但是您可以公开另一个端点,允许使用发布多个对象。如果您在客户端累积请求并每秒批量发送它们,这将减少开销。您分析过代码吗?您知道http或SSL开销很大吗?如果客户端使用http2,而您使用协议h2在nginx上代理django,则可以维护连接,而不会中断连接。https的SSL部分不应该那么重要,因为现代x86机器在硬件中有AES指令。如果您使用nginx,您可以使用go或rust为速度开辟一条路径。在我的测试案例中,go比django快10倍,rust快100倍。