首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用django通道/websocket实现实时定位的有效方法

用django通道/websocket实现实时定位的有效方法
EN

Stack Overflow用户
提问于 2019-08-09 09:17:02
回答 1查看 481关注 0票数 1

我的工作是实时为基础的应用程序,它需要更新的位置,用户的任何时候,它是改变。

Android应用程序被用作前端,它使用Google/融合Api定位,而在onLocationChanged(loc:Location)中,我将通过Websocket发送最新位置。然后由django通道使用者接收位置更新,该使用者的任务是异步地将位置存储在数据库中(我正在使用@database_sync_to_async装饰器)。

但问题是,当Android应用程序试图每秒发送10-15个位置更新时,服务器就会崩溃。更新实时定位的有效方法是什么?

注:可按需提供代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-16 03:20:02

问问自己,对于这些数据,你需要什么样的分辨率。你真的需要每秒更新10次吗?如果不是的话,就进行每一次更新,或者看看Android会不会让你的更新速度变慢。其次,查找本地异步数据库库。每次调用它时,@database_sync_to_async都会运行不同的线程,这会扼杀从事件循环中获得的性能提升。如果您在一个线程中说,您将保持CPU缓存新鲜。你就不能使用ORM了。但是你真的需要一个数据库吗?或者Redis能工作吗?如果是这样的话,直接调用aioredis就会快得多,因为它在内存中,您可以使用它的快速数据结构,比如队列和集合。如果您需要Redis更快,请看它的多线程分叉KeyDB。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57426965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档