tornado与mysql长连接_python – Tornado Web框架Mysql连接处理

我最近一直在探索Tornado Web框架,以便为许多不同的客户提供大量一致的连接.

我有一个请求处理程序,基本上采用RSA加密字符串并解密它.解密的文本是一个XML字符串,由我编写的SAX文档处理程序解析.一切都很好,执行时间(每个HTTP请求)大约是100毫秒(解密和解析).

XML包含用户的用户名和密码哈希.我想连接到MySQL服务器以验证用户名是否与应用程序提供的密码哈希相匹配.

当我基本上添加以下代码时:

conn = MySQLdb.connect (host = "192.168.1.12",

user = "",

passwd = "",

db = "")

cursor = conn.cursor()

safe_username = MySQLdb.escape_string(XMLLoginMessage.username)

safe_pass_hash = MySQLdb.escape_string(XMLLoginMessage.pass_hash)

sql = "SELECT * FROM `mrad`.`users` WHERE `username` = '" + safe_username + "' AND `password` = '" + safe_pass_hash + "' LIMIT 1;"

cursor.execute(sql)

cursor.close()

conn.close()

执行HTTP请求所需的时间最多可达4-5秒!我相信这是在连接到MySql数据库服务器本身所花费的时间内产生的.

我的问题是如何加快速度?我可以在全局范围内声明MySQL连接并通过创建新游标在请求处理程序中访问它,还是因为Tornado的异步设计会遇到并发问题?

基本上,我怎么能不必每次Http请求都需要与MySQL服务器建立新的连接,所以它只需要几分之一秒而不是多秒来实现.

另请注意,SQL Server实际上与Tornado Web Server实例位于同一台物理计算机上

更新

我只是通过一个分析器运行一个简单的MySQL查询,下面的代码相同.

对’connections.py’init函数的调用需要4.944秒才能单独执行.那似乎不对,是吗?

更新2

我认为使用一个连接(或者甚至一些具有非常简单的DB conn池)运行将足够快以处理我期望的每个龙卷风web服务器实例的吞吐量.

如果1,000个客户端需要访问查询,典型的查询时间在几千秒内,那么最不幸的客户端只需要等待一秒钟来检索数据.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值