利用djangchannels/webs更新实时位置的有效方法

2024-09-26 18:15:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的工作是基于实时的应用程序,它需要更新用户的位置,每当它被改变。你知道吗

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

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

注:代码可按需提供


Tags: django用户api数据库应用程序google使用者location
1条回答
网友
1楼 · 发布于 2024-09-26 18:15:14

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

相关问题 更多 >

    热门问题