python - 网络应用python中频繁访问数据库的最佳解决方案
问题描述
我有一个用 python 编写的网络服务器,客户端连接。它为客户端连接时存在的每个新客户端连接创建新线程。现在,当客户端连接时,服务器会继续进行数据库查询,以获取有关客户端的任何可能更新(如果有任何来自管理门户的更新)。
我为每个线程打开 db 连接,并在连接客户端时让它连接,但是当连接 1-2 k 客户端并且 db 有 1-2 个活动连接时,这将是一个问题。
然后我将其更改为关闭数据库连接并按需重新连接,但现在有 2-3k 客户端,服务器正在与数据库进行大量连接和断开连接。
我尝试了 MySQL 数据库池,但问题是 32 最大池大小对我来说不是一个解决方案。
任何人有任何其他想法或解决方案?
解决方案
必须同时连接多个客户端的问题不是您只能通过代码解决的问题。当您的应用程序变得更大时,您必须在不同的机器上拥有同一个 python 服务器的多个实例。然后,您将使用Load Balancer。负载均衡器将充当转发器。基本上,您的客户端将连接到它,然后负载均衡器会将数据转发到您的 python 服务器实例。
如果你想了解更多关于负载均衡的信息,这里有一些链接:
- https://iri-playbook.readthedocs.io/en/feat-docker/loadbalancer.html
- https://www.nginx.com/resources/glossary/load-balancing/
现在对于数据库,您可以只使用一个数据库连接并在线程之间共享它,而不是为每个客户端创建一个连接。
推荐阅读
- php - Laravel:使用带有 where 子句的数据透视表获取单个模型
- javascript - 如何将 3 维张量传递到密集层(tensorflow.js)
- django - 在 Heroku 上部署 Django 后 Chart.js 无法正常工作
- python - 如何使用 tweepy 3.10.0 从特定消息 id 读取 dm 的 twitter 列表
- selenium - Robotframework - Pycharm 没有显示建议
- python - Django:将“名称”传递给 Client.post()
- python - 错误消息:无法对切片索引
使用这些索引器 [True] - javascript - 等待使用 puppeteer 显示 Google Captcha
- ios - Swift IOS UIDatepicker - UIDatepicker 显示不正确
- python - 添加和打印项目,使用 python 使用列表