我的工作是实时为基础的应用程序,它需要更新的位置,用户的任何时候,它是改变。
Android应用程序被用作前端,它使用Google/融合Api定位,而在onLocationChanged(loc:Location)中,我将通过Websocket发送最新位置。然后由django通道使用者接收位置更新,该使用者的任务是异步地将位置存储在数据库中(我正在使用@database_sync_to_async装饰器)。
但问题是,当Android应用程序试图每秒发送10-15个位置更新时,服务器就会崩溃。更新实时定位的有效方法是什么?
注:可按需提供代码。
发布于 2019-08-16 03:20:02
问问自己,对于这些数据,你需要什么样的分辨率。你真的需要每秒更新10次吗?如果不是的话,就进行每一次更新,或者看看Android会不会让你的更新速度变慢。其次,查找本地异步数据库库。每次调用它时,@database_sync_to_async都会运行不同的线程,这会扼杀从事件循环中获得的性能提升。如果您在一个线程中说,您将保持CPU缓存新鲜。你就不能使用ORM了。但是你真的需要一个数据库吗?或者Redis能工作吗?如果是这样的话,直接调用aioredis就会快得多,因为它在内存中,您可以使用它的快速数据结构,比如队列和集合。如果您需要Redis更快,请看它的多线程分叉KeyDB。
https://stackoverflow.com/questions/57426965
复制相似问题