我应该在Tornado中使用MySQL数据库池还是单一持久连接

时间:2016-02-14 16:35:12

标签: mysql nginx amazon-ec2 tornado pymysql

如果我使用异步mysql库,如 Tornado-MySQL (由PyMySQL)或TorMySQL或Asynctorndb作为异步库来执行MySQL数据库调用,以免阻止 IOLoop

我想知道的是我应该在给定的场景中以何种方式使用它们?

场景:假设我在Nginx后面运行我的Tornado Web应用程序作为Load Balancer。整个设置在AWS EC2实例中。现在Nginx,Tornado,MySQL都运行在同一台主机上。 Tornado实例以Supervisord作为流程管理程序运行。

如果没有。我的EC2实例的VCPU是 x ,而没有。 Nginx工作进程是 y 而没有。 Tornado实例是 z ,然后在这种情况下,我应该如何使用我的异步MySQL库?

  1. 我应该在我的应用程序初始化中创建单一持久连接,它将传递给所有处理程序吗?或者我应该使用连接池

  2. 考虑到每个方法对no的影响是什么。运行的Tornado实例

  3. 每种方法有哪些优点和缺点?

1 个答案:

答案 0 :(得分:3)

“单一持久连接”策略用于将同步数据库驱动程序与Tornado一起使用(在这种情况下,IOLoop保证一次只能有一个请求使用该连接)。使用异步驱动程序,一次可以使用多个请求,这意味着您必须使用连接池。