【问题标题】:Efficient way of updating real time location using django-channels/websocket使用 django-channels/websocket 更新实时位置的有效方法
【发布时间】:2019-08-09 09:17:02
【问题描述】:

我正在开发基于实时的应用程序,它需要在更改时更新用户的位置。

Android 应用 用作前端,使用 Google/Fused Api 和@987654321 获取位置@,我正在通过 Websocket 发送最新位置。 django 频道消费者 接收位置更新,该消费者的工作是将位置异步存储在数据库中(我正在使用@database_sync_to_async 装饰器。

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

注意:代码可按需提供

【问题讨论】:

    标签: python django websocket django-channels


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-05-11
      • 2018-12-16
      • 2018-12-17
      • 2021-07-24
      • 1970-01-01
      • 2023-03-16
      • 2018-10-12
      • 2021-06-15
      • 2019-02-26
      相关资源
      最近更新 更多