Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确处理数据库连接?_Python_Database - Fatal编程技术网

Python 如何正确处理数据库连接?

Python 如何正确处理数据库连接?,python,database,Python,Database,我想优化我的系统,能够处理大量的用户。即使这个网站永远不会流行,我也要把事情做好 无论如何,我目前正在使用两种数据库解决方案的组合: 1.) Either SQL (mysql, postgre) via SQLAlchemy OR MongoDB 2.) Redis 我使用Redis作为“热”数据库(因为它的速度快得多,并且在主数据库解决方案上释放压力),而不是通过cron任务在两个数据库之间同步数据。我使用Redis进行会话管理、统计等。然而,如果我的Redis服务器崩溃,站点将保持运行(

我想优化我的系统,能够处理大量的用户。即使这个网站永远不会流行,我也要把事情做好

无论如何,我目前正在使用两种数据库解决方案的组合:

1.) Either SQL (mysql, postgre) via SQLAlchemy OR MongoDB
2.) Redis
我使用Redis作为“热”数据库(因为它的速度快得多,并且在主数据库解决方案上释放压力),而不是通过cron任务在两个数据库之间同步数据。我使用Redis进行会话管理、统计等。然而,如果我的Redis服务器崩溃,站点将保持运行(回退到sql/mongo)

这就是我对数据的设计。现在我想做正确的连接

由于99%的页面都需要sql/mongo和redis,我目前的设计如下:

- When new HTTP request comes in, I connect to all databases
- When page finishes rendering, I disconnect from databases
现在很明显,我正在进行大量的连接/断开连接。我已经计算过,这种模式可以维持相当数量的游客,但我想知道是否有更好的方法来做到这一点

请求之间的持续连接是否会提高性能/负载,或者大量打开的连接是否会阻塞服务器? 您是否建议创建一个连接池?如果是这样,什么时候应该创建连接池,模型应该如何访问它(或者从中获取连接对象)


如果这些问题很愚蠢,我很抱歉,但我是个新手。

我不认为这是一个事先优化事情的好方法。你们不知道瓶颈会在哪里出现,你们可能只是在浪费时间去做你们将来不需要的事情


如果要使用ORM,可以在以后更改数据库类型,所以现在可以使用任何数据库类型。无论如何,如果你的网站人气高涨,你将需要获得更多的服务器,添加一些任务队列(芹菜)等。你以后可以做很多事情来优化。现在你应该专注于让你的网站流行起来,并使用将来可以扩展的技术

> P>如果你要打开连接,你应该绝对考虑池,以避免使用每个会话连接或类似的东西(只要它们被正确地锁定以避免泄漏)。尽管如此,这样做的必要性还不清楚。如果您可以量化系统与数据库的平均/最坏连接时间,那么您将能够做出更加明智的决策

尝试运行一个或多个脚本来敲打您的系统,并调查与DB相关的计时。这将帮助您立即决定是否保持持久连接,并为以后提供一个方便的DB加载脚本